Cod sursa(job #35671)

Utilizator moga_florianFlorian MOGA moga_florian Data 22 martie 2007 12:04:35
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include<stdio.h>
#include<fstream>
#define nmax 1100

using namespace std;

int a[nmax],b[nmax],m1[nmax],m2[nmax];
int aux1[nmax],aux2[nmax];

int main()
{
FILE *fin=fopen("balanta.in","r"),
     *fout=fopen("balanta.out","w");
     
int n,m,k,i,j,r;
fscanf(fin,"%d%d",&n,&m);

for(i=1;i<=m;i++)
  {
  fscanf(fin,"%d",&k);
  memset(aux1,0,sizeof aux1);
  memset(aux2,0,sizeof aux2);
  
  for(j=1;j<=k;j++)
     fscanf(fin,"%d",&a[j]);
  for(j=1;j<=k;j++)
     fscanf(fin,"%d",&b[j]);
  fscanf(fin,"%d",&r);
  
  for(j=1;j<=k;j++)
     {
     if(r==1)
       aux1[a[j]]=1;
     else
       aux2[a[j]]=1;
     }
  for(j=1;j<=k;j++)
     {
     if(r==1)
       aux2[b[j]]=1;
     else
       aux1[b[j]]=1;
     }
  
  if(r==0)
     {
     for(j=1;j<=k;j++)
        {
        m1[a[j]]=1;
        m1[b[j]]=1;
        m2[b[j]]=1;
        m2[a[j]]=1;
        }          
     }
  else
     {
     for(j=1;j<=n;j++)
        if(m1[j]==0 && aux1[j]==0)
           m1[j]=1;
           
     for(j=1;j<=n;j++)
        if(m2[j]==0 && aux2[j]==0)
           m2[j]=1;                   
     }     
  }
  
int n1,n2,v1,v2;
n1=n2=0;
for(i=1;i<=n;i++)
   {
   if(m1[i]==0)
     {
     n1++;
     v1=i;
     }
   if(m2[i]==0)
     {
     n2++;
     v2=i;
     }
   }
  
if(n1==1 && n2==0)
  fprintf(fout,"%d\n",v1);
else
if(n1==0 && n2==1)
  fprintf(fout,"%d\n",v2);
else
  fprintf(fout,"0\n");
  
fclose(fin);
fclose(fout);
return 0;
}