Pagini recente » Monitorul de evaluare | Cod sursa (job #1574307)
#include <iostream>
#include <cstdio>
using namespace std;
int n, m, i, j, k, s[1030], d[1030], su, sg1,sg2, s1,s2,x, l, ok,nr, mon, r;
bool g[1030], u[1030];
int main()
{
freopen("balanta.in", "r", stdin);
freopen("balanta.out", "w", stdout);
scanf("%d %d", &n, &m);
for(i=1;i<=n;i++){
g[i]=1;
u[i]=1;
}
for(i=1;i<=m;i++){
scanf("%d", &k);
for (j=1;j<=n;j++) {
s[j] = 0;
d[j] = 0;
}
for(j=1;j<=k;j++){
scanf("%d", &x);
s[x] = 1;
}
for(j=1;j<=k;j++){
scanf("%d", &x);
d[x] = 1;
}
scanf("%d", &r);
if (r == 0) {
// tot ce e pe talere, adica marcat in s si d nu e moneda falsa
for (j=1;j<=n;j++)
if (s[j] == 1 || d[j] == 1) {
g[j] = 0;
u[j] = 0;
}
}
if (r == 1) {
for (j=1;j<=n;j++) {
if (s[j] == 1)
u[j] = 0;
if (d[j] == 1)
g[j] = 0;
if (s[j] == 0 && d[j] == 0) {
u[j] = 0;
g[j] = 0;
}
}
}
if (r == 2) {
for (j=1;j<=n;j++) {
if (d[j] == 1)
u[j] = 0;
if (s[j] == 1)
g[j] = 0;
if (s[j] == 0 && d[j] == 0) {
u[j] = 0;
g[j] = 0;
}
}
}
}
// trebuie ca im g si u sa ramana un singur element 1
for (i=1;i<=n;i++) {
if (g[i] == 1) {
nr++;
mon = i;
}
if (u[i] == 1) {
nr++;
mon = i;
}
}
if (nr == 1)
printf("%d",mon);
else
printf("0");
return 0;
}