Cod sursa(job #403734)

Utilizator KoniacDocea Andrei Koniac Data 25 februarie 2010 11:15:48
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 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;

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
						g[t]=0;
					if(b[t]&&u[t])
						u[t]=1;
					else
						u[t]=0;
				}
			}
			else
				for(t=1;t<=n;t++){
					if(a[t]&&u[t])
						u[t]=1;
					else
						u[t]=0;
					if(b[t]&&g[t])
						g[t]=1;
					else
						g[t]=0;
				}
		memset(a,0,sizeof(a));
		memset(a,0,sizeof(b));
	}
	
	for(i=1;i<=n;i++){
		if(u[i]){
			if(ok){
				fals=0;
				break;
			}
			else{
				fals=i;
				ok=1;
			}
		}
	}
	for(i=1;i<=n;i++){
		if(g[i])
			if(ok){
				fals=0;
				break;
			}
			else{
				fals=i;
				ok=1;
			}
	}
	fprintf(G,"%d",fals);
	fclose(f);
	fclose(G);
	return 0;
}