Cod sursa(job #961086)

Utilizator primulDarie Sergiu primul Data 11 iunie 2013 16:57:09
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 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;
}