Pagini recente » Cod sursa (job #131575) | Cod sursa (job #1430951) | Cod sursa (job #745151) | Cod sursa (job #1489782) | Cod sursa (job #732972)
Cod sursa(job #732972)
#include <fstream>
using namespace std;
ifstream F("balanta.in");
ofstream G("balanta.out");
typedef bool Multime[1033];
typedef int Sir[1033];
typedef int Nr;
Multime Greu,Usor,Mask;
Sir A,B;
Nr N,M,Rez,K;
int main()
{
F>>N>>M;
for (int i=1;i<=M;++i)
{
F>>K;
for (int i=1;i<=K;++i) F>>A[i];
for (int i=1;i<=K;++i) F>>B[i];
F>>Rez;
switch (Rez)
{
case 0:
for (int i=1;i<=K;++i)
Greu[A[i]]=1,Usor[A[i]]=1,
Greu[B[i]]=1,Usor[B[i]]=1;
break;
case 1:
for (int i=1;i<=N;++i) Mask[i]=1;
for (int i=1;i<=K;++i) Mask[A[i]]=0;
for (int i=1;i<=N;++i) Greu[i]|=Mask[i];
for (int i=1;i<=N;++i) Mask[i]=1;
for (int i=1;i<=K;++i) Mask[B[i]]=0;
for (int i=1;i<=N;++i) Usor[i]|=Mask[i];
break;
case 2:
for (int i=1;i<=N;++i) Mask[i]=1;
for (int i=1;i<=K;++i) Mask[B[i]]=0;
for (int i=1;i<=N;++i) Greu[i]|=Mask[i];
for (int i=1;i<=N;++i) Mask[i]=1;
for (int i=1;i<=K;++i) Mask[A[i]]=0;
for (int i=1;i<=N;++i) Usor[i]|=Mask[i];
break;
}
}
int co=0,place=0;
for (int i=1;i<=N;++i)
if ( !Greu[i] )
++co,place=i;
int co2=0,place2=0;
for (int i=1;i<=N;++i)
if ( !Usor[i] )
++co2,place2=i;
if ( ( co==0 && co2==1 ) || ( co==1 && co2==0 ) )
G<<place2+place<<'\n';
else
G<<"0\n";
F.close();
G.close();
return 0;
}