Cod sursa(job #1712442)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 2 iunie 2016 21:14:31
Problema Balanta Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <cstdio>
#define MAXM 1024
#define MAXK 512
int left[MAXM+1][MAXK+1],right[MAXM+1][MAXK+1],k[MAXM+1],r[MAXM+1],vf[MAXM+1],vf1[MAXM+1],vf2[MAXM+1];
int main(){
   FILE*fi,*fout;
   int i,j,n,m,con1,con2,ans1,ans2;
   fi=fopen("balanta.in" ,"r");
   fout=fopen("balanta.out" ,"w");
   fscanf(fi,"%d%d" ,&n,&m);
   for(i=1;i<=m;i++){
      fscanf(fi,"%d" ,&k[i]);
      for(j=1;j<=k[i];j++){
         fscanf(fi,"%d" ,&left[i][j]);
         vf[left[i][j]]++;
      }
      for(j=1;j<=k[i];j++){
         fscanf(fi,"%d" ,&right[i][j]);
         vf[right[i][j]]++;
      }
      fscanf(fi,"%d" ,&r[i]);
      if(r[i]==0){
          for(j=1;j<=k[i];j++)
             vf[left[i][j]]=vf[right[i][j]]=-MAXM;
      }
      if(r[i]==1){
          for(j=1;j<=k[i];j++){
              vf1[left[i][j]]++;
              vf2[right[i][j]]++;
          }
      }
      if(r[i]==2){
          for(j=1;j<=k[i];j++){
              vf2[left[i][j]]++;
              vf1[right[i][j]]++;
          }
      }
   }
   con1=con2=0;
   for(i=1;i<=n;i++)
      if(vf[i]>0){
           if(vf1[i]==vf[i]){
               con1++;
               ans1=i;
           }
           if(vf2[i]==vf[i]){
               con2++;
               ans2=i;
           }
      }
   if(con1!=1&&con2!=1)
      fprintf(fout,"0");
   if(con1==1)
      fprintf(fout,"%d" ,ans1);
   else
      if(con2==0)
         fprintf(fout,"%d" ,ans2);
   fclose(fi);
   fclose(fout);
   return 0;
}