Cod sursa(job #2637209)

Utilizator eugen5092eugen barbulescu eugen5092 Data 21 iulie 2020 21:16:58
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.2 kb
#include <bits/stdc++.h>
using namespace std;

ifstream ci("balanta.in");
ofstream cou("balanta.out");

int n,m;
int bal[1026];
int t1[1026][1026];
int t2[1026][1026];
int rezz[1026];

int maigrele[1026];
int maiusoare[1026];

int aux[1048];
void citire()
{
	ci>>n>>m;
	int i;
	for(i=1; i<=m; i++)
	{
		ci>>bal[i];
		for(int j=1; j<=bal[i]; j++)
		{
			ci>>t1[i][j];
		}
		for(int j=1; j<=bal[i]; j++)
		{
			ci>>t2[i][j];
		}
		ci>>rezz[i];
	}
	for(i=1; i<=n; i++)
	{
		maigrele[i]=1;
		maiusoare[i]=1;
	}
}

void rst()
{
	for(int i=1; i<=n; i++)
	{
		aux[i]=0;
	}
}

void rez()
{
	int i,x;
	int cng=0,cnu=0;
	for(i=1; i<=m; i++)
	{

		if(rezz[i]==0)
		{
			for(int j=1; j<=bal[i]; j++)
			{
				x=t1[i][j];
				maigrele[x]=0;
				maiusoare[x]=0;
				//cout<<x<<" ";
			}
			for(int j=1; j<=bal[i]; j++)
			{
				x=t2[i][j];
				maigrele[x]=0;
				maiusoare[x]=0;
				//cout<<x<<" ";
			}
		}
		else if(rezz[i]==1)
		{
			//la stanga
			rst();
			for(int j=1; j<=bal[i]; j++)
			{
				x=t1[i][j];
				aux[x]=1;
			}
			for(int j=1; j<=n; j++)
			{
				if(aux[j]==0)
				{
					maigrele[j]=0;
				}
			}
			rst();
			for(int j=1; j<=bal[i]; j++)
			{
				x=t2[i][j];
				aux[x]=1;
			}
			for(int j=1; j<=n; j++)
			{
				if(aux[j]==0)
				{
					maiusoare[j]=0;
				}
			}
		}
		else if(rezz[i]==2)
		{
			rst();
			for(int j=1; j<=bal[i]; j++)
			{
				x=t1[i][j];
				aux[x]=1;
			}
			for(int j=1; j<=n; j++)
			{
				if(aux[j]==0)
				{
					maiusoare[j]=0;
				}
			}
			rst();
			for(int j=1; j<=bal[i]; j++)
			{
				x=t2[i][j];
				aux[x]=1;
			}
			for(int j=1; j<=n; j++)
			{
				if(aux[j]==0)
				{
					maigrele[j]=0;
				}
			}
		}
	}
	for(i=1; i<=n; i++)
	{
		if(maigrele[i]==1)
		{
			cng++;
		}
		if(maiusoare[i]==1)
		{
			cnu++;
		}
	}
	if(cng+cnu>1)
	{
		cou<<"0";
	}
	else
	{
		if(cng==1)
		{
			for(i=1; i<=n; i++)
			{
				if(maigrele[i]==1)
				{
					cou<<i;
					return;
				}
			}
		}else{
            for(i=1; i<=n; i++)
			{
				if(maiusoare[i]==1)
				{
					cou<<i;
					return;
				}
			}
		}
	}
}

int main()
{
	citire();
	rez();
	return 0;
}