Pagini recente » Cod sursa (job #2369042) | Monitorul de evaluare | Cod sursa (job #2199640) | Cod sursa (job #1645641) | Cod sursa (job #1367151)
#include <fstream>
#include <cstring>
#define DIM 1030
using namespace std;
ifstream fin ("balanta.in" );
ofstream fout("balanta.out");
int N, M, i, j, H[DIM], L[DIM];
int V[DIM], W[DIM], F[DIM], cod;
int K, t, nr1, nr2, pos;
void SetUp(){
fin >> N >> M;
for(i = 1; i <= N; i ++){
H[i] = 1;
L[i] = 1;
}
return;
}
void update_0(){
for(i = 1; i <= K; i ++){
H[V[i]] = 0; H[W[i]] = 0;
L[V[i]] = 0; L[V[i]] = 0;
}
return;
}
void update_1(){
memset(F, 0, sizeof(F));
for(i = 1; i <= K; i ++)
F[V[i]] = 1;
for(i = 1; i <= N; i ++)
if(F[i] == 0)
H[i] = 0;
memset(F, 0, sizeof(F));
for(i = 1; i <= K; i ++)
F[W[i]] = 1;
for(i = 1; i <= N; i ++)
if(F[i] == 0)
L[i] = 0;
return;
}
void update_2(){
memset(F, 0, sizeof(F));
for(i = 1; i <= K; i ++)
F[W[i]] = 1;
for(i = 1; i <= N; i ++)
if(F[i] == 0)
H[i] = 0;
memset(F, 0, sizeof(F));
for(i = 1; i <= K; i ++)
F[V[i]] = 1;
for(i = 1; i <= N; i ++)
if(F[i] == 0)
L[i] = 0;
return;
}
void Balance(){
for(t = 1; t <= M; t ++){
fin >> K;
memset(V, 0, sizeof(V));
memset(W, 0, sizeof(W));
for(i = 1; i <= K; i ++)
fin >> V[i];
for(i = 1; i <= K; i ++)
fin >> W[i];
fin >> cod;
if(cod == 0) update_0();
if(cod == 1) update_1();
if(cod == 2) update_2();
}
return;
}
void Finish(){
for(i = 1; i <= N; i ++){
if(H[i] == 1){
nr1 ++;
pos = i;
}
if(L[i] == 1){
nr2 ++;
pos = i;
}
}
if((nr1 == 1 && nr2 == 0) || (nr1 == 0 && nr2 == 1))
fout << pos;
else
fout << 0;
return;
}
int main(){
SetUp();
Balance();
Finish();
return 0;
}