Cod sursa(job #403800)

Utilizator cnt_tstcont teste cnt_tst Data 25 februarie 2010 12:28:00
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<stdio.h>
#include<string.h>
int a[1025],b[1025],g[1025],u[1025],poz;
int i,j,k,m,n,x,y,r;
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]=1;
		g[i]=1;
	}
	
	
	for(k=1;k<=m;k++){
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		fscanf(f,"%d",&x);
		for(j=1;j<=x;j++){
			fscanf(f,"%d",&y);
			a[y]=1;
		}
		for(j=1;j<=x;j++){
			fscanf(f,"%d",&y);
			b[y]=1;
		}
		fscanf(f,"%d",&r);
		if(r==0){
			for(i=1;i<=n;i++)
				if(a[i]==1 || b[i]==1)
					u[i]=g[i]=0;
		}
		if(r==1){
			for(i=1;i<=n;i++){
				if(a[i]==1)
					u[i]=0;
				if(b[i]==1)
					g[i]=0;
			}
		}
		if(r==2){
			for(i=1;i<=n;i++){
				if(a[i]==1)
					g[i]=0;
				if(b[i]==1)
					u[i]=0;
			}
		}
		
	}
	x=0;
	for(i=1;i<=n;i++){
		if(u[i]){
			x++;
			poz=i;
		}
		if(g[i]){
			x++;
			poz=i;
		}
	}
	if(x==1)
		fprintf(G,"%d",poz);
	else
		fprintf(G,"0");


	
	
	fclose(f);
	fclose(G);
	return 0;
}