Pagini recente » Cod sursa (job #855029) | Cod sursa (job #1378867) | Cod sursa (job #290399) | Cod sursa (job #1014519) | Cod sursa (job #29308)
Cod sursa(job #29308)
#include <stdio.h>
#include <stdlib.h>
int m, n,verbose=0;
int v[1024];
void read();
int main(){
read();
int i, mem,nr;
FILE *f=fopen("balanta.out","w");
nr=mem=0;
if(verbose)printf("======\n");
for(i=1;i<=n;i++)if(v[i]>0){mem=i;
nr++;
}
if(nr>1)fprintf(f,"0\n");
else fprintf(f,"%d\n",v[mem]);
fclose(f);
return 0;
}
void read(){
int stanga[512],dreapta[512];
int k, tilt, i, j;
FILE *f=fopen("balanta.in","r");
fscanf(f,"%d %d", &n, &m);
//n e nr de monede
//m e numaru de cantariri
for(i=0;i<m;i++){
//iau fiecare cantarire in parte
fscanf(f,"%d",&k);
if(verbose)printf("k=%d \t", k);
for(j=0;j<k;j++){fscanf(f,"%d",&stanga[j]);
if(verbose)printf("%d ",stanga[j]);}
if(verbose)printf(" || ");
for(j=0;j<k;j++){fscanf(f,"%d",&dreapta[j]);
if(verbose)printf("%d ",dreapta[j]);}
fscanf(f,"%d",&tilt);
if(verbose)printf("\ttilt=%d\n",tilt);
if(tilt){ //daca balanta nu e echilibrata
if(tilt==1){
for(j=0;j<k;j++)if(v[stanga[j]]!=-1)v[stanga[j]]=1;
for(j=0;j<k;j++)v[dreapta[j]]=-1;
}
if(tilt==2){
for(j=0;j<k;j++)if(v[dreapta[j]]!=-1)v[dreapta[j]]=1;
for(j=0;j<k;j++)v[stanga[j]]=-1;
}
}
else {//daca e echilibrata atunci nu mai "suspectez" monedele respective... EVER!
for(j=0;j<k;j++)v[stanga[j]]=-1;
for(j=0;j<k;j++)v[dreapta[j]]=-1;
}
}
fclose(f);
}