Cod sursa(job #726513)
Utilizator | Data | 27 martie 2012 11:57:27 | |
---|---|---|---|
Problema | Balanta | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.55 kb |
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 515
int n,m,a[N],b[N],h[2*N],l[2*N],i,k,t,j,e,c[N],d[N];
int main()
{FILE *f=fopen("balanta.in","r"),*g=fopen("balanta.out","w");
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
h[i]=l[i]=1;
while(m--)
{fscanf(f,"%d",&k);
for(i=1;i<=k;i++)
fscanf(f,"%d",&a[i]);
for(i=1;i<=k;i++)
fscanf(f,"%d",&b[i]);
a[k+1]=b[k+1]=n+1;
sort(a+1,a+k+2),sort(b+1,b+k+2);
fscanf(f,"%d",&t);
if(!t)
for(i=1;i<=k;i++)
h[a[i]]=h[b[i]]=l[a[i]]=l[b[i]]=0;
else
if(t==1)
{for(i=j=1;i<=n;)
if(h[i])
if(a[j]==i)
h[i++]=1,j++;
else
if(a[j]<i)
j++;
else
h[i++]=0;
else
h[i++]=0;
for(i=j=1;i<=n;)
if(l[i])
if(b[j]==i)
l[i++]=1,j++;
else
if(b[j]<i)
j++;
else
l[i++]=0;
else
l[i++]=0;}
else
{for(i=j=1;i<=n;)
if(h[i])
if(b[j]==i)
h[i++]=1,j++;
else
if(b[j]<i)
j++;
else
h[i++]=0;
else
h[i++]=0;
for(i=j=1;i<=n;)
if(l[i])
if(a[j]==i)
l[i++]=1,j++;
else
if(a[j]<i)
j++;
else
l[i++]=0;
else
l[i++]=0;}}
for(j=e=0,i=1;i<=n;i++)
{if(h[i])
c[++j]=i;
if(l[i])
d[++e]=i;}
if(j==1&&!e)
fprintf(g,"%d",c[1]);
else
if(!j&&e==1)
fprintf(g,"%d",d[1]);
else
fprintf(g,"0");
return 0;}