Cod sursa(job #762154)

Utilizator titusuTitus C titusu Data 28 iunie 2012 22:42:53
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
using namespace std;

#include <iostream>
#include <fstream>

ifstream fin("balanta.in");
ofstream fout("balanta.out");

int n, m, G[1030], U[1030], x[600], y[600], k, rez;

int main(){
	fin >> n >> m;
	for(int i=1;i<=n;++i)
		G[i] = U[i] = 1;
	for( ; m ; --m){
		fin >> k;
		for(int i=1;i<=k;++i)
			fin >> x[i];
		for(int i=1;i<=k;++i)
			fin >> y[i];
		fin >> rez;
		if(rez == 0)
			for(int i=1;i<=k;++i)
				G[x[i]] = G[y[i]] = U[x[i]] = U[y[i]] = 0;
		if(rez == 1){
			//cele din x[] sunt mai grele, cele din y[] mai usoare
			for(int i=1;i<=k;++i){
				if(G[x[i]]==1)
					G[x[i]] = -1;
				if(U[y[i]]==1)
					U[y[i]] = -1;
			}
			for(int i=1;i<=n;++i)
				G[i] = (G[i]==-1?1:0), U[i] = (U[i]==-1?1:0);
		}
		if(rez == 2){
			//cele din y[] sunt mai grele, cele din x[] mai usoare
			for(int i=1;i<=k;++i){
				if(G[y[i]]==1)
					G[y[i]] = -1;
				if(U[x[i]]==1)
					U[x[i]] = -1;
			}
			for(int i=1;i<=n;++i)
				G[i] = (G[i]==-1?1:0), U[i] = (U[i]==-1?1:0);
		}
	}
	int nru=0, gg, nrg=0, uu;
	for(int i=1;i<=n;++i){
		if(G[i] == 1)
			nrg++, gg = i;
		if(U[i] == 1)
			nru++, uu = i;
	}
	if(nrg==1 && nru==0)
		fout << gg << "\n";
	else
		if(nrg==0 && nru==1)
			fout << uu << "\n";
		else
			fout << "0\n";
	return 0;
}