Cod sursa(job #26516)

Utilizator stef2nStefan Istrate stef2n Data 5 martie 2007 18:07:30
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <stdio.h>

#define infile "balanta.in"
#define outfile "balanta.out"
#define NMAX 1030

FILE *fin,*fout;
int n,m;
int k,op,left[NMAX],right[NMAX];
int count_mic[NMAX],count_mare[NMAX];
bool sol[NMAX];

void adauga(int count[NMAX], int k, int v[NMAX])
  {
   for(int i=0;i<k;i++)
      count[v[i]]++;
  }

int main()
{
int i,j,all=0;
fin=fopen(infile,"r");
fout=fopen(outfile,"w");
fscanf(fin,"%d %d",&n,&m);
for(i=1;i<=n;i++)
   count_mic[i]=count_mare[i]=0;
for(i=1;i<=m;i++)
   {
    fscanf(fin,"%d",&k);
    for(j=0;j<k;j++)
       fscanf(fin,"%d",&left[j]);
    for(j=0;j<k;j++)
       fscanf(fin,"%d",&right[j]);
    fscanf(fin,"%d",&op);
    if(op)
      all++;
    if(op==1)
      {
       adauga(count_mic,k,right);
       adauga(count_mare,k,left);
      }
    if(op==2)
      {
       adauga(count_mic,k,left);
       adauga(count_mare,k,right);
      }
    if(op==0)
      {
       for(j=0;j<k;j++)
          {
           count_mic[left[j]]=count_mare[left[j]]=-1;
           count_mic[right[j]]=count_mare[right[j]]=-1;
          }
      }
   }

for(i=1;i<=n;i++)
   sol[i] = (count_mic[i]==all) || (count_mare[i]==all);

int count=0,poz;
for(i=1;i<=n;i++)
   if(sol[i])
     if(count)
       {
        fprintf(fout,"0\n");
        fclose(fout);
        return 0;
       }
     else
       {
        count++;
        poz=i;
       }

if(count)
  fprintf(fout,"%d\n",poz);
else
  fprintf(fout,"0\n");

fclose(fin);
fclose(fout);
return 0;
}