Cod sursa(job #403737)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 25 februarie 2010 11:18:52
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<stdio.h>
#include<string.h>
#define dim 1025
FILE*f=fopen("balanta.in","r");
FILE*g2=fopen("balanta.out","w");
int n,m,nr,x,t,ii,i,sol,nrsol;
char a[dim],b[dim],u[dim],g[dim];
int main () {
	fscanf(f,"%d%d",&n,&m);
	for(i=1;i<=n;i++){
		u[i]=1;
		g[i]=1;
	}
	for(ii=1;ii<=m;ii++){
		fscanf(f,"%d",&nr);
		for(i=1;i<=nr;i++) {
			fscanf(f,"%d",&t);
			a[t] = 1;
		}
		for(i=1;i<=nr;i++) {
			fscanf(f,"%d",&t);
			b[t] = 1;
		}
		fscanf(f,"%d",&x);
		
		if(x==0){
			for(i=1;i<=n;i++) {
				if (a[i]==1)
					u[i] = g[i] = 0;
				if (b[i]==1)
					u[i] = g[i] = 0;
			}
		}
		if(x==1){
			//u=u^b
			//g=g^a
			for(i=1;i<=n;i++){
				if(u[i]==a[i])
					u[i]=0;
				if(g[i]==b[i])
					g[i]=0;
			}
		}
		if(x==2){
			//u=u^b
			//g=g^b;
			for(i=1;i<=n;i++){
				if(u[i]==b[i])
					u[i]=0;
				if(g[i]==a[i])
					g[i]=0;
			}
		}
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
	}
	for(i=1;i<=n;i++){
		if(g[i]==1)
			sol=i,nrsol++;
		if(u[i]==1)
			sol=i,nrsol++;
	}
	if(nrsol==1)
		fprintf(g2,"%d",sol);
	else
		fprintf(g2,"0");
	
	
	fclose(f);
	fclose(g2);
	return 0;
}