Pagini recente » Istoria paginii runda/test_bossimici/clasament | Istoria paginii runda/concurstreiore/clasament | Cod sursa (job #234608) | Cod sursa (job #1095070) | Cod sursa (job #357194)
Cod sursa(job #357194)
#include <fstream>
#include <bitset>
using namespace std;
#define MAX_N 1030
ifstream fin ("balanta.in");
ofstream fout ("balanta.out");
int N, M;
bitset <MAX_N> H, L;
int main()
{
fin >> N >> M;
L.set(); H.set();
for(int i = 1; i <= M; ++i)
{
int nr, B[4][MAX_N], c;
fin >> nr;
for(int j = 1; j <= nr; ++j)
fin >> B[1][j];
for(int j = 1; j <= nr; ++j)
fin >> B[2][j];
fin >> c;
if(c)
{
bitset <MAX_N> act;
for(int i = 1; i <= nr; ++i)
act[B[c][i]] = 1;
for(int i = 1; i <= N; ++i)
if(H[i])
H[i] = act[i];
act.reset();
for(int i = 1; i <= nr; ++i)
act[B[3-c][i]] = 1;
for(int i = 1; i <= N; ++i)
if(L[i])
L[i] = act[i];
}
else
{
bitset <MAX_N> act;
for(int i = 1; i <= nr; ++i)
act[B[1][i]] = 1,
act[B[2][i]] = 1;
for(int i = 1; i <= N; ++i)
if(act[i])
H[i] = L[i] = 0;
}
/*for(int i = 1; i <= N; ++i)
printf("%d ",(int)H[i]);
printf("\n");
for(int i = 1; i <= N; ++i)
printf("%d ",(int)L[i]);
printf("\n\n\n");*/
}
int cand = 0;
for(int i = 1; i <= N; ++i)
{
if(H[i] == 1)
if(cand)
{
fout << "0\n";
return 0;
}
else
cand = i;
if(L[i] == 1)
if(cand)
{
fout << "0\n";
return 0;
}
else
cand = i;
}
fout << cand << "\n";
}