Cod sursa(job #468197)

Utilizator darrenRares Buhai darren Data 2 iulie 2010 17:20:12
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include<fstream>
using namespace std;

int n, m, k, sg, fh[1025], fl[1025], sh, sl;
int fa[1025], fb[1025];
int main()
{
	ifstream fin("balanta.in");
	ofstream fout("balanta.out");
	fin >> n >> m;
	for (int i = 1; i <= n; ++i)
		fh[i] = 1, fl[i] = 1;
	while (m--)
	{
		fin >> k;
		
		memset(fa, 0, sizeof(fa));
		memset(fb, 0, sizeof(fb));
		
		for (int i = 1, aux; i <= k; ++i)
			fin >> aux, fa[aux] = 1;
		for (int i = 1, aux; i <= k; ++i)
			fin >> aux, fb[aux] = 1;
		fin >> sg;
		switch (sg)
		{
		case 0:
			for (int i = 1; i <= n; ++i)
			{
				if (fh[i] == 1 && (fa[i] == 1 || fb[i] == 1)) fh[i] = 0;
				if (fl[i] == 1 && (fa[i] == 1 || fb[i] == 1)) fl[i] = 0;
			}
			break;
		case 1:
			for (int i = 1; i <= n; ++i)
			{
				if (fa[i] == 1 && fl[i] == 1) fl[i] = 0;
				if (fb[i] == 1 && fh[i] == 1) fh[i] = 0;
				if (fa[i] == 0 && fh[i] == 1) fh[i] = 0;
				if (fb[i] == 0 && fl[i] == 1) fl[i] = 0;
			}
			break;
		case 2:
			for (int i = 1; i <= n; ++i)
			{
				if (fa[i] == 1 && fh[i] == 1) fh[i] = 0;
				if (fb[i] == 1 && fl[i] == 1) fl[i] = 0;
				if (fa[i] == 0 && fl[i] == 1) fl[i] = 0;
				if (fb[i] == 0 && fh[i] == 1) fh[i] = 0;
			}
			break;
		}
	}
	for (int i = 1; i <= n; ++i)
	{
		if (fh[i] == 1) ++sh;
		if (fl[i] == 1) ++sl;
	}
	if (sh + sl > 1) fout << 0;
	else
		for (int i = 1; i <= n; ++i)
			if (fh[i] == 1 || fl[i] == 1)
			{
				fout << i;
				break;
			}
}