单淘汰赛,求一个人的最大胜场和最小胜场,当这个的value是所有人最大时,胜场固定为n,否则最小胜场为0,因为有可能第一场就碰到厉害的人输掉,最大胜场为比他的小的人加他自己的总数取2的对数
#include<stdio.h>
int main()
{
int n, k, v[1024];
while (scanf("%d %d", &n, &k) != EOF)
{
int i, vk, max = 0, min = 0, count = 1, total = 1 << n;
for (i = 0; i < total; i++)
scanf("%d", &v[i]);
vk = v[k];
for (i = 0; i < total; i++)
if (v[i] < vk)
count++;
if (count == total)
max = min = n;
else
{
while (1 << max <= count)
max++;
max--;
}
printf("%d %d\n", min, max);
}
return 0;
}