您的位置:首页 > 其它

Codeforces 370B

2014-04-30 18:36 288 查看
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct
{
int t;
int a[105];
char str[5];
}Play;
Play player[105];
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}

int find(int m,int i)
{
int l,r,mid;
l = 0;
r = player[i].t-1;
while(l <= r)
{
mid = (l + r) >> 1;
if(m == player[i].a[mid])
return 0;
if(m < player[i].a[mid])
r = mid - 1;
else
l = mid + 1;
}
return 1;
}

int main()
{
int n,i,j,k;
int flag,t;
while(~scanf("%d",&n))
{
for(i = 0;i < n;i ++)
strcpy(player[i].str,"YES");
for(i = 0;i < n;i ++)
{
scanf("%d",&t);
player[i].t = t;
for(j = 0; j < t; j ++)
{
scanf("%d",&player[i].a[j]);
}
qsort(player[i].a,t,sizeof(player[i].a[0]),cmp);
}
for(i = 0;i < n;i ++)
{
if(!strcmp(player[i].str,"YES"))
{
for(j = i + 1;j < n;j ++)
{
flag = 0;
if(!(player[i].t < player[j].t))
{
for(k = 0; k < player[j].t;k ++)
{
if(find(player[j].a[k],i))
flag = 1;
}
if(!flag)
{
strcpy(player[i].str,"NO");
if(player[i].t == player[j].t)
strcpy(player[j].str,"NO");
}
}
else
{
for(k = 0;k < player[i].t;k ++)
{
if(find(player[i].a[k],j))
flag = 1;
}
if(!flag)
strcpy(player[j].str,"NO");
}
}
}
}
for(i = 0;i < n;i ++)
printf("%s\n",player[i].str);
}
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: