Cod sursa(job #2219646)

Utilizator racheriunicolaechowchow racheriunicolae Data 9 iulie 2018 14:35:14
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <bits/stdc++.h>

using namespace std;
bitset <1024> big,small,a,b;
int n,m,i,t,k,v[3005],r,ans;
int main()
{
    ifstream fin("balanta.in");
    ofstream fout("balanta.out");
    fin>>n>>m;
    for(i=1;i<=n;i++)big[i]=1;
    for(i=1;i<=n;i++)small[i]=1;
    for(t=1;t<=m;t++)
    {
        fin>>k;
        for(i=1;i<=2*k;i++)fin>>v[i];
        fin>>r;
        if(r==0)
        {
            for(i=1;i<=n;i++)
                a[i]=1,b[i]=1;
            for(i=1;i<=2*k;i++)a[v[i]]=0,b[v[i]]=0;
            big&=a;
            small&=b;
        }
        if(r==1){
          for(i=1;i<=n;i++)
                a[i]=0,b[i]=0;
            for(i=1;i<=k;i++)a[v[i]]=1;
            for(i=1;i<=k;i++)b[v[i+k]]=1;
            big&=a;
            small&=b;
        }
        if(r==2){
             for(i=1;i<=n;i++)
                a[i]=0,b[i]=0;
            for(i=k+1;i<=2*k;i++)a[v[i]]=1;
            for(i=k+1;i<=2*k;i++)b[v[i-k]]=1;
            big&=a;
            small&=b;
        }
    }
    if(big.count() + small.count() == 1)
    {
        for(i=1;i<=n;i++)
            if(big[i] == 1 or small[i] == 1)
        {
            fout<<i<<"\n";
            return 0;
        }
    }
    fout<<0<<"\n";
    return 0;
}