Cod sursa(job #403802)

Utilizator cnt_tstcont teste cnt_tst Data 25 februarie 2010 12:28:49
Problema Balanta Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>
#include<string.h>
#define DIM 1025
int a[DIM],b[DIM],u[DIM],g[DIM];

int i,j,r,m,n,poz,x,y,k;

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;
}