Cod sursa(job #1083138)

Utilizator acomAndrei Comaneci acom Data 15 ianuarie 2014 17:37:14
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.45 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("balanta.in");
ofstream g("balanta.out");
int n,m,k,e,a[1028],b[1028],L[1028],H[1028];
void elim()
{
    int i,ii=1,jj=1;
    sort(a+1,a+k+1);
    sort(b+1,b+k+1);
    for (i=1;i<=n;++i)
        if (i!=a[ii] && i!=b[jj])
            L[i]=H[i]=1;
        else
        {
            while (i>=a[ii] && ii<k) ++ii;
            while (i>=b[jj] && jj<k) ++jj;
        }
}
int solutie()
{
    int i,sol=0,nr=0;
    for (i=1;i<=n;++i)
        if (!L[i])
        {
            ++nr;
            if (nr>1) return 0;
            sol=i;
        }
        else if (!H[i])
        {
            ++nr;
            if (nr>1) return 0;
            sol=i;
        }
    return sol;
}
int main()
{
    int i,j;
    f>>n>>m;
    for (i=1;i<=m;++i)
    {
        f>>k;
        for (j=1;j<=k;++j)
            f>>a[j];
        for (j=1;j<=k;++j)
            f>>b[j];
        f>>e;
        switch (e)
        {
            case 0:
                for (j=1;j<=k;++j)
                    L[b[j]]=H[a[j]]=L[a[j]]=H[a[j]]=1;
            break;
            case 1:
                for (j=1;j<=k;++j)
                    H[b[j]]=L[a[j]]=1;
                elim();
            break;
            case 2:
                for (j=1;j<=k;++j)
                    H[a[j]]=L[b[j]]=1;
                elim();
            break;
        }
    }
    g<<solutie()<<'\n';
    return 0;
}