Cod sursa(job #403740)

Utilizator vladcatrinaVlad Catrina vladcatrina Data 25 februarie 2010 11:22:18
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <stdio.h>
#include <string.h>

FILE*f = fopen("balanta.in","r");
FILE*h = fopen("balanta.out","w");

char a[1024],b[1024],u[1024],g[1024];
int i, j, n, cardu,cardg,x,k,m,r;

int main() {
	
	fscanf(f,"%d %d",&n,&m);
	for(i=1;i<=n;i++){
		u[i]=1;
		g[i]=1;
	}
	//cardu=n;
	//cardg=n;
	
	for(i=1;i<=m;i++){
		fscanf(f,"%d",&k);
		for(j=1;j<=k;j++){
			fscanf(f,"%d",&x);
			a[x]=1;
		}
		for(j=1;j<=k;j++){
			fscanf(f,"%d",&x);
			b[x]=1;
		}
		fscanf(f,"%d",&r);
		if(r==0){
			for(j=1;j<=n;j++){
				if(u[j]==a[j])
					u[j]=0;
				if(g[j]==a[j])
					g[j]=0;
				if(u[j]==b[j])
					u[j]=0;
				if(g[j]==b[j])
					g[j]=0;
				
			}
			//cardu-=k*2;
			//cardg-=k*2;
	
		}else if(r==1){
			for(j=1;j<=n;j++){
				if(u[j]==a[j])
					u[j]=0;
				if(g[j]==b[j])
					g[j]=0;
				
			}
			//	cardu-=k;
				//cardg-=k;

		}else if(r==2){
			for(j=1;j<=n;j++){
				if(u[j]==b[j])
					u[j]=0;
				if(g[j]==a[j])
					g[j]=0;
				
			}
				//cardu-=k;
				//cardg-=k;
		}
		
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
	}
	
	for(i=1;i<=n;i++){
		if(u[i]==1)
			cardu++;
		if(g[i]==1)
			cardg++;
	}
	
	if(cardu>1&&cardg>1){
		fprintf(h,"0");
	} else {
		if(cardu==1){
			for(i=1;i<=n;i++){
				if(u[i]==1)
					fprintf(h,"%d",i);
			}
		}else if(cardg==1){
			for(i=1;i<=n;i++){
				if(g[i]==1)
					fprintf(h,"%d",i);
			}
		}
	}
	
	fclose(f);
	fclose(h);
	return 0;
}