2009-03-14 20:13:56來源不明

ACM 11222 11222 - Only I did it!”

pchome有點窄,這題是暴力

/************************************************************/

#include<stdio.h>              
#include<stdlib.h>  
int main()  
{  
 int n,time=0;
 while(scanf("%d",&n)==1)
  {
   int a,b,c;
   for(a=0;a<n;a++)
    {
     time++;
     int people[4][10001]={0},same[4][10001]={0},mm[4][1001]={0},flag1=0,flag2=0,flag3=0,m[4]={0};
      for(b=0;b<3;b++)
       {
        scanf("%d",&m[b]);
        for(c=0;c<m[b];c++)
         {
          scanf("%d",&mm[b][c]);
          people[b][mm[b][c]]=1;
          if(b==0) {same[1][mm[b][c]]=1;same[2][mm[b][c]]=1;}
          else if(b==1) {same[0][mm[b][c]]=1;same[2][mm[b][c]]=1;}
          else {same[0][mm[b][c]]=1;same[1][mm[b][c]]=1;}
         }
       }
      /*處理@@*/
      for(b=0;b<10001;b++)
       {
        if(people[0][b]==1&&same[0][b]==0) flag1++;
        if(people[1][b]==1&&same[1][b]==0) flag2++;
        if(people[2][b]==1&&same[2][b]==0) flag3++;
       }
      printf("Case #%d:\n",time);
      if(flag1>flag2&&flag1>flag3)
       {
        printf("1 %d",flag1);
        for(b=0;b<10001;b++) if(people[0][b]==1&&same[0][b]==0) printf(" %d",b);
       }
      else if(flag1<flag2&&flag2>flag3)
       {
        printf("2 %d",flag2);
        for(b=0;b<10001;b++) if(people[1][b]==1&&same[1][b]==0) printf(" %d",b);
       }
      else if(flag3>flag2&&flag1<flag3)
       {
        printf("3 %d",flag3);
        for(b=0;b<10001;b++) if(people[2][b]==1&&same[2][b]==0) printf(" %d",b);
       }
      else
       {
        printf("1 %d",flag1);
        for(b=0;b<10001;b++) if(people[0][b]==1&&same[0][b]==0) printf(" %d",b);
        printf("\n2 %d",flag2);
        for(b=0;b<10001;b++) if(people[1][b]==1&&same[1][b]==0) printf(" %d",b);
        printf("\n3 %d",flag3);
        for(b=0;b<10001;b++) if(people[2][b]==1&&same[2][b]==0) printf(" %d",b);
       }
       printf("\n");
    }
  }
 return 0;  
}