Cod sursa(job #131378)

Utilizator razvi9Jurca Razvan razvi9 Data 3 februarie 2008 18:16:40
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 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;
inline void k0()
{
	
	for(i=1;i<=n;i++) {
		it=a.find(x[i]);
		if(it!=a.end())
			a.erase(it);
		it=a.find(y[i]);
		if(it!=a.end())
			a.erase(it);

		it=b.find(x[i]);
		if(it!=b.end())
			b.erase(it);
		it=b.find(y[i]);
		if(it!=b.end())
			b.erase(it);}
}

inline void k1()
{
	
	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());
}

inline void k2()
{
	
	aux.clear();
	it=a.end();
	for(i=1;i<=n;i++)
		if(a.find(y[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(x[i])!=it)
			aux.insert(x[i]);
	b.clear();
	b.insert(aux.begin(),aux.end());
}

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) k0();
		if(k==1) k1();
		if(k==2) k2();
	}
	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;}