Cod sursa(job #403772)

Utilizator KoniacDocea Andrei Koniac Data 25 februarie 2010 11:52:25
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<stdio.h>
#include<string.h>
#define DIM 1025
char a[DIM],b[DIM],u[DIM],g[DIM];
int n,m,j,i,x,k,r,t,fals,ok,poz;

int main(){
	FILE * f = fopen("balanta.in","r");
	FILE * G = fopen("balanta.out","w");
	fscanf(f,"%d%d",&n,&m);
	for (i=1;i<=n;i++)
		u[i] = g[i] = 1;
	for(i=1;i<=m;i++){
		fscanf(f,"%d",&k);
		for(j=1;j<=2*k;j++){
			fscanf(f,"%d",&x);
			if(j<=k)
				a[x]=1;
			else
				b[x]=1;
		}
		fscanf(f,"%d",&r);
		if(r==0){
			for(t=1;t<=n;t++){
				if(a[t])
					u[t]=g[t]=0;
				if(b[t])
					u[t]=g[t]=0;
			}
		}
		else{
			if(r==1){
				for(t=1;t<=n;t++){
					if(a[t]&&g[t])
						g[t]=1;
					else
						if(a[t]==0)
							g[t]=0;
					if(b[t]&&u[t])
						u[t]=1;
					else
						if(b[t]==0)
							u[t]=0;
				}
			}
			else
				for(t=1;t<=n;t++){
					if(a[t]&&u[t])
						u[t]=1;
					else
						if(a[t]==0)
							u[t]=0;
					if(b[t]&&g[t])
						g[t]=1;
					else
						if(b[t]==0)
							g[t]=0;
				}
		}
		memset(a,0,sizeof(a));
		memset(a,0,sizeof(b));
	}
	
	
	x = 0;
	for (i=1;i<=n;i++) {
		if (u[i] == 1) {
			x++;
			poz = i;
		}
		if (g[i] == 1) {
			x++;
			poz = i;
		}
	}
	if (x==1)
		fprintf(G,"%d",poz);
	else
		fprintf(G,"0");
	fclose(f);
	fclose(G);
	return 0;
}