Cod sursa(job #196691)

Utilizator marinMari n marin Data 28 iunie 2008 09:32:10
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <stdio.h>

int n,m,k,r,t,nH,nL,pH,pL,i,x;
int a[1026],b[1026],H[1026],L[1026];


int main(){
  FILE *f = fopen("balanta.in","r");
  fscanf(f,"%d %d",&n,&m);
  for (i=1;i<=n;i++)
    H[i]=L[i]=1;
  for (t=1;t<=m;t++) {
    fscanf(f,"%d",&k);
    for (i=1;i<=k;i++) {
      fscanf(f,"%d",&x);
      a[x]=1;
    }
    for (i=1;i<=k;i++) {
      fscanf(f,"%d",&x);
      b[x]=1;
    }
    fscanf(f,"%d",&r);

    if (r==0) {
      for (i=1;i<=n;i++) {
	if (a[i]==1) H[i]=L[i]=0;
	if (b[i]==1) H[i]=L[i]=0;
      }
    } else if (r==1) {
      for (i=1;i<=n;i++) {
	H[i]=H[i]&a[i];
	L[i]=L[i]&b[i];
	a[i]=b[i]=0;
      }
    } else {
      for (i=1;i<=n;i++) {
	H[i]=H[i]&b[i];
	L[i]=L[i]&a[i];
	a[i]=b[i]=0;
      }
    }
  }
  fclose(f);

  nH=0;nL=0;
  for (i=1;i<=n;i++) {
    if (H[i]==1) {
      nH++;
      pH=i;
    }
    if (L[i]==1) {
      nL++;
      pL=i;
    }
  }


  FILE *g = fopen("balanta.out","w");
  if ((nH==1)&&(nL==0))
    fprintf(g,"%d",pH);
  else if ((nH==0)&&(nL==1))
    fprintf(g,"%d",pL);
  else fprintf(g,"0");
  fclose(g);

  return 0;
}