Cod sursa(job #2774967)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 septembrie 2021 18:38:38
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.04 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,a[515],b[515],h[1030],l[1030],i,k,t,j,e,c[515],d[515];
int main()
{
    freopen("balanta.in","r",stdin),freopen("balanta.out","w",stdout),scanf("%d%d",&n,&m);
    for(i=1;i<=n;++i)
        h[i]=l[i]=1;
    while(m--) {
        scanf("%d",&k);
        for(i=1;i<=k;++i)
            scanf("%d",a+i);
        for(i=1;i<=k;++i)
            scanf("%d",b+i);
        a[k+1]=b[k+1]=n+1,sort(a+1,a+k+2),sort(b+1,b+k+2),scanf("%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;
    }
    printf("%d",j==1&&!e?c[1]:(!j&&e==1?d[1]:0));
    return 0;
}