Cod sursa(job #403820)

Utilizator vladcatrinaVlad Catrina vladcatrina Data 25 februarie 2010 12:59:14
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#include <stdio.h>
#include <string.h>

FILE*f = fopen("balanta.in","r");
FILE*h = fopen("balanta.out","w");
char a[1048],b[1048],u[1048],g[1048];
int i, j, n, cardu,cardg,x,k,m,r,poz;

int main() {
	
	fscanf(f,"%d %d",&n,&m);
	for(i=1;i<=n;i++){
		u[i]=1;
		g[i]=1;
	}
	//cardu=n;
	//cardg=n;
	
	for(i=1;i<=m;i++){
		fscanf(f,"%d",&k);
		for(j=1;j<=k;j++){
			fscanf(f,"%d",&x);
			a[x]=1;
		}
		for(j=1;j<=k;j++){
			fscanf(f,"%d",&x);
			b[x]=1;
		}
		fscanf(f,"%d",&r);
		if(r==0){
			for(j=1;j<=n;j++){
				if(u[j]==a[j])
					u[j]=0;
				if(g[j]==a[j])
					g[j]=0;
				if(u[j]==b[j])
					u[j]=0;
				if(g[j]==b[j])
					g[j]=0;
				
			}
			//cardu-=k*2;
			//cardg-=k*2;
	
		}else if(r==1){
			for(j=1;j<=n;j++){
				if(g[j]==1 && a[j]==1)
					g[j]=1;
				else
					g[j] = 0;
				
				if(u[j]==1 && b[j]==1)
					u[j]=1;
				else
					u[j] = 0;
				
			}
			//	cardu-=k;
				//cardg-=k;

		}else if(r==2){
			for(j=1;j<=n;j++){
				if(u[j]==1 && a[j]==1)
					u[j]=1;
				else
					u[j] = 0;
				
				if(g[j]==1 && b[j]==1)
					g[j]=1;
				else
					g[j] = 0;
				
			}
				//cardu-=k;
				//cardg-=k;
		}
		
		memset(a,0,sizeof(a));
		memset(b,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(h,"%d",poz);
	} else
		fprintf(h,"0");
	/*
	if(cardu>1&&cardg>1){
		fprintf(h,"0");
	} else {
		if(cardu==1){
			for(i=1;i<=n;i++){
				if(u[i]==1)
					fprintf(h,"%d",i);
			}
		}else if(cardg==1){
			for(i=1;i<=n;i++){
				if(g[i]==1)
					fprintf(h,"%d",i);
			}
		}
	}
	*/
	fclose(f);
	fclose(h);
	return 0;
}