链接:http://poj.org/problem?id=2028
水题啊,昨天做了poj1038的第二种方法这个就好做了。
#include<stdio.h>
#include<string.h>
#define MAXN 50005
int conve[MAXN];//记录第date天有空的人
int main()
{
int n,q,m,date,maxdate,maxconve;
int i,j,pos;
while(scanf("%d%d",&n,&q)!=EOF)
{
if(!n&&!q)return 0;
memset(conve,0,sizeof(conve));
maxdate=0;
maxconve=0;
pos=0; //记录最终开会的那一天
for(i=0;i<n;i++)
{
scanf("%d",&m);
for(j=0;j<m;j++)
{
scanf("%d",&date);
conve[date]++; //第date天有空,conve[date]++
if(date>maxdate)
maxdate=date;
}
}
for(i=1;i<=maxdate;i++)
{
if(conve[i]>=q&&conve[i]==maxconve&&i<pos)//有多个满足条件的date时,取最小的date
{
maxconve=conve[i];
pos=i;
}
if(conve[i]>=q&&conve[i]>maxconve)//求最大的conve[i],即有空的人最多的那一天。
{
maxconve=conve[i];
pos=i;
}
}
printf("%d\n",pos);
}
return 0;
}