Pagini recente » Cod sursa (job #1264558) | Cod sursa (job #1257348)
#include <stdio.h>
#define MAXN 1024
int a[MAXN+1], b[MAXN+1], m[MAXN+1], M[MAXN+1];
inline void init(int n, int v[], int val){
int i;
for(i=1; i<=n; i++){
v[i]=val;
}
}
inline int max(int a, int b){
if(a>=b){
return a;
}
return b;
}
int main(){
int r, s, p, q, n, x, i, j, k;
FILE *fin, *fout;
fin=fopen("balanta.in", "r");
fout=fopen("balanta.out", "w");
fscanf(fin, "%d%d", &n, &q);
init(n, M, 1);
init(n, m, 1);
for(i=0; i<q; i++){
fscanf(fin, "%d", &k);
init(n, a, 0);
for(j=0; j<k; j++){
fscanf(fin, "%d", &x);
a[x]=1;
}
init(n, b, 0);
for(j=0; j<k; j++){
fscanf(fin, "%d", &x);
b[x]=1;
}
fscanf(fin, "%d", &x);
if(x==0){
for(j=1; j<=n; j++){
if((a[j]==1)||(b[j]==1)){
M[j]=0;
m[j]=0;
}
}
}else if(x==1){
for(j=1; j<=n; j++){
if(a[j]==0){
M[j]=0;
}
if(b[j]==0){
m[j]=0;
}
}
}
else{
for(j=1; j<=n; j++){
if(a[j]==0){
m[j]=0;
}
if(b[j]==0){
M[j]=0;
}
}
}
}
p=0;
r=0;
q=0;
s=0;
for(i=1; i<=n; i++){
if(M[i]==1){
p++;
r=i;
}
if(m[i]==1){
q++;
s=i;
}
}
if(p+q==1){
fprintf(fout, "%d\n", max(r, s));
}else{
fprintf(fout, "0\n");
}
fclose(fin);
fclose(fout);
return 0;
}