Cod sursa(job #2323520)

Utilizator shantih1Alex S Hill shantih1 Data 19 ianuarie 2019 11:56:42
Problema Balanta Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>
#include <cstring>

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

int n,m,i,nr,k,z,ng,nu,xg,xu,pg,pu;
int g[1025],u[1025],c[1025];

void grea()
{
	if(z==0)
		for(i=1;i<=2*k;i++)
			g[c[i]]=1;
	if(z==1)
	{
		nr=0;
		for(i=1;i<=k;i++)
			if(g[c[i]]!=1)	g[c[i]]=2, nr++;
		for(i=k+1;i<=2*k;i++)
			g[c[i]]=1;
		if(nr==0)	pg=1;
	}
	if(z==2)
	{
		nr=0;
		for(i=k+1;i<=2*k;i++)
			if(g[c[i]]!=1)	g[c[i]]=2,	nr++;
		for(i=1;i<=k;i++)
			g[c[i]]=1;
		if(nr==0)	pg=1;
	}
}
void usoara()
{
	if(z==0)
		for(i=1;i<=2*k;i++)
			u[c[i]]=1;
	if(z==2)
	{
		nr=0;
		for(i=1;i<=k;i++)
			if(u[c[i]]!=1)	u[c[i]]=2, nr++;
		for(i=k+1;i<=2*k;i++)
			u[c[i]]=1;
		if(nr==0)	pu=1;
	}
	if(z==1)
	{
		nr=0;
		for(i=k+1;i<=2*k;i++)
			if(u[c[i]]!=1)	u[c[i]]=2,	nr++;
		for(i=1;i<=k;i++)
			u[c[i]]=1;
		if(nr==0)	pu=1;
	}
}

int main () {
    
    fin>>n>>m;
	while(m--)
	{
		fin>>k;
		for(i=1;i<=2*k;i++)
			fin>>c[i];
		fin>>z;
		grea();
		usoara();
	}
	
	for(i=1;i<=n;i++)
	{
		if(u[i]==2)	xu=i, nu++;
		if(g[i]==2)	xg=i, ng++;
	}
	if(ng>1)	pg=1;
	if(nu>1)	pu=1;
	
	if(pg!=pu)
	{
		if(pg)	fout<<xu<<"\n";
		else	fout<<xg<<"\n";
	}
	else	fout<<0<<"\n";
	
    // scuze balanta, mi-ai dat numa 30 de pt si vreau sa mi schimb ideea, dar nu am una :))
}