Pagini recente » Cod sursa (job #2026363) | Cod sursa (job #2289967) | Cod sursa (job #571332) | Cod sursa (job #2933930) | Cod sursa (job #29375)
Cod sursa(job #29375)
/*
*
*
info-arena 2.0 - preONI 2007 - Runda 3 - Balanta
*
*
*/
#include<stdio.h>
#include<string.h>
#define INPUT "balanta.in"
#define OUTPUT "balanta.out"
#define INFI -1000
FILE *fin=fopen(INPUT, "r"),*fout=fopen(OUTPUT, "w");
int n,m,b[1025],a[1025];
void parcurg();
int main()
{
parcurg();
fclose(fin);
fclose(fout);
return 0;
}
void parcurg()
{
fscanf(fin, "%d %d", &n, &m);
int valoare[1025],valoare2[1025],k,temp1,temp2;
memset(valoare,0,sizeof(valoare));
memset(valoare2,0,sizeof(valoare2));
for(int i=1;i<=m;++i)
{
fscanf(fin, "%d", &a[0]);
k=a[0];
for(int j=1;j<=k;++j)
fscanf(fin, "%d", &a[j]);
for(int j=k+1;j<=2*k;++j)
fscanf(fin, "%d", &a[j]);
fscanf(fin, "%d", &b[i]);
if(b[i]==0)
for(int j=1;j<=2*k;++j)
{
valoare[a[j]]=INFI;
valoare2[a[j]]=INFI;
}
else
if(b[i]==1)
{
temp1=0;
temp2=0;
for(int j=1;j<=k;++j)
{
if(valoare[a[j]]!=INFI)
temp1=1;
if(valoare2[a[j+k]]!=INFI)
temp2=1;
}
if(!temp1)
for(int j=1;j<=2*k;++j)
valoare[j]=INFI;
if(!temp2)
for(int j=1;j<=2*k;++j)
valoare2[j]=INFI;
for(int j=k+1;j<=2*k;++j)
{
valoare[a[j]]=INFI;
valoare2[a[j-k]]=INFI;
}
}
else
{
temp1=0;
temp2=0;
for(int j=k+1;j<=2*k;++j)
{
if(valoare[a[j]]!=INFI)
temp1=1;
if(valoare[a[j-k]]!=INFI)
temp2=1;
}
if(!temp1)
for(int j=1;j<=2*k;++j)
valoare[j]=INFI;
if(!temp2)
for(int j=1;j<=2*k;++j)
valoare2[j]=INFI;
for(int j=1;j<=k;++j)
{
valoare[a[j]]=INFI;
valoare2[a[j+k]]=INFI;
}
}
}
int numar1,numar2,pozitie2,pozitie1;
numar1=0;
numar2=0;
pozitie1=0;
pozitie2=0;
for(int i=1;i<=n;++i)
{
if(valoare[i]==0)
{
++numar1;
pozitie1=i;
}
if(valoare2[i]==0)
{
++numar2;
pozitie2=i;
}
}
if((numar1==0&&numar2==0)||(numar1==1&&numar2==1)||(numar1>1&&numar2==0)||(numar1==0&&numar2>1)||(numar1>1&&numar2>1))
fprintf(fout, "0\n");
else
if(numar1==1&&numar2!=1)
fprintf(fout, "%d\n", pozitie1);
else
if(numar2==1&&numar1!=1)
fprintf(fout, "%d\n", pozitie2);
}