Cod sursa(job #131366)

Utilizator razvi9Jurca Razvan razvi9 Data 3 februarie 2008 18:07:34
Problema Balanta Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include<cstdio>
#include<set>
using namespace std;
set<int> a;
set<int> b;
set<int> aux;
set<int> ::iterator it;
int n,m,x[1050],y[1050],i,k;
int main()
{
	freopen("balanta.in","r",stdin);
	freopen("balanta.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(i=1;i<=n;i++){a.insert(i);b.insert(i);}
	for(;m;m--){
		scanf("%d",&n);
		for(i=1;i<=n;i++) scanf("%d",&x[i]);
		for(i=1;i<=n;i++) scanf("%d",&y[i]);
		scanf("%d",&k);
		if(k==0)
			for(i=1;i<=n;i++) {
				if((it=a.find(x[i]))!=a.end())
					a.erase(it);
				if((it=b.find(x[i]))!=b.end())
					b.erase(it);
				if((it=a.find(y[i]))!=a.end())
					a.erase(it);
				if((it=b.find(y[i]))!=b.end())
					b.erase(it);}
		if(k==1){
			aux.clear();
			it=a.end();
			for(i=1;i<=n;i++)
				if(a.find(x[i])!=it)
					aux.insert(x[i]);
			a.clear();
			a.insert(aux.begin(),aux.end());
			aux.clear();
			it=b.end();
			for(i=1;i<=n;i++)
				if(b.find(y[i])!=it)
					aux.insert(y[i]);
			b.clear();
			b.insert(aux.begin(),aux.end());}
		if(k==2){
			aux.clear();
			it=a.end();
			for(i=1;i<=n;i++)
				if(a.find(x[i])!=it)
					aux.insert(y[i]);
			a.clear();
			a.insert(aux.begin(),aux.end());
			aux.clear();
			it=b.end();
			for(i=1;i<=n;i++)
				if(b.find(y[i])!=it)
					aux.insert(x[i]);
			b.clear();
			b.insert(aux.begin(),aux.end());}
	}
	if(a.size()==1&&b.size()==0) printf("%d\n",*a.begin());
	else
		if(b.size()==1&&a.size()==0) printf("%d\n",*b.begin());
		else printf("0\n");
	fclose(stdout);
	return 0;}