Cod sursa(job #189363)

Utilizator pandaemonAndrei Popescu pandaemon Data 14 mai 2008 03:56:06
Problema Balanta Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<stdio.h>
#include<iostream.h>

#define NMAX 2024

int n,m,k;

int A[NMAX+1], B[NMAX+1];

int stiva[NMAX+1];  int cntA,cntB,tip;


void functie(int v[], int &cnt, int start)
{
  int aux[NMAX+1],i;

  for(i=1;i<=n;i++) aux[i]=0;


  for(i=start; i<start+k; i++)

    aux[ stiva[i] ] = 1;


  for(i=1; i<=n; i++)

    if(aux[i]==0 && v[i]==1) { v[i]=0; cnt--; }
}


void cauta(int v[])
{
  for(int i=1; i<=n; i++) if(v[i]==1) printf("%d\n",i);
}


int main()
{
  freopen("balanta.in","r",stdin);
  freopen("balanta.out","w",stdout);

  scanf("%d %d", &n,&m);   int i;

  for(i=1; i<=n; i++) { A[i]=1; B[i]=1; }    cntA=n; cntB=n;

  while(m--)
  {

     scanf("%d", &k);

     for(i=1; i<=(k<<1); i++)  scanf("%d", &stiva[i]);

     scanf("%d", &tip);

     if(tip==1) { functie(A,cntA,1); functie(B,cntB,k+1); }
     if(tip==2) { functie(A,cntA,k+1); functie(B,cntB,1); }

     if(tip==0)

		for(i=1; i<=(k<<1); i++)
		  if( A[ stiva[i] ] == 1 )  { A[ stiva[i] ]=0; cntA--; }
		  if( B[ stiva[i] ] == 1 )  { B[ stiva[i] ]=0; cntB--; }


  }



  if(cntA==1 && cntB==0) cauta(A);
  else
  if(cntB==1 && cntA==0) cauta(B);
  else
  printf("0\n");

  return 0;

}