Cod sursa(job #407720)

Utilizator Tucu94Andrei Tuculanu Tucu94 Data 2 martie 2010 16:33:29
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 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++) { 
				// aici trebuia facuta efectiv intersectia, adica se pune 1 daca 
				//ambele sunt 1, altfel se pune 0 
				if (a[i]==1 && u[i]==1) 
					u[i] = 1; 
				else	
					u[i] = 0; 
				if (b[i]==1 && g[i]==1) 
					g[i] = 1; 
                
				else
					g[i] = 0;
			} 
        
		} 
		
		if (r==2) { 
			for (i=1;i<=n;i++) { 
				if (b[i]==1 && u[i]==1) 
					u[i] = 1;
				else
					u[i] = 0; 
				if (a[i]==1 && g[i]==1) 
					g[i] = 1; 
				else
					g[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; 
}