Cod sursa(job #955565)

Utilizator classiusCobuz Andrei classius Data 1 iunie 2013 01:43:50
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.63 kb
#include <cstdio>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    FILE* f=fopen("balanta.in","r");
    ofstream g("balanta.out");

    size_t n,m;

    fscanf(f,"%d%d",&n,&m);

    vector<bool> hv(n+1,1),lv(n+1,1);

    while(m--){
        vector<bool> a(n+1,0),b(n+1,0);
        int k;
        fscanf(f,"%d",&k);

        for(size_t i=0;i<k;i++){
            int x;
            fscanf(f,"%d",&x);
            a[x]=1;
        }

        for(size_t i=0;i<k;i++){
            int x;
            fscanf(f,"%d",&x);
            b[x]=1;
        }

        int st;
        fscanf(f,"%d",&st);

        switch(st){
        case 0:
            for(size_t i=1;i<=n;i++)
                if(a[i]||b[i])
                    hv[i]=lv[i]=0;
            break;
        case 1:
            for(size_t i=1;i<=n;i++){
                if(hv[i]&&!a[i])
                    hv[i]=0;
                if(lv[i]&&!b[i])
                    lv[i]=0;
            }
            break;
        case 2:
            for(size_t i=1;i<=n;i++){
                if(lv[i]&&!a[i])
                    lv[i]=0;
                if(hv[i]&&!b[i])
                    hv[i]=0;
            }
            break;
        }
    }
    int hvc=0,lvc=0;
    int x,y;
    for(size_t i=1;i<=n;i++)
        if(hv[i]){
            hvc++;
            x=i;
        }
    for(size_t i=1;i<=n;i++)
        if(lv[i]){
            lvc++;
            y=i;
        }

    if(hvc==1&&!lvc){
        g<<x;
        return 0;
    }
    if(lvc==1&&!hvc){
        g<<y;
        return 0;
    }
    g<<0;

    return 0;
}