Cod sursa(job #2548344)

Utilizator marius004scarlat marius marius004 Data 16 februarie 2020 15:50:18
Problema Balanta Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.8 kb
#include <iostream>
#include <fstream>

std::ifstream f("balanta.in");
std::ofstream g("balanta.out");

const int NMAX = 1025;
int n,m,k,result,dreapta[NMAX],stanga[NMAX];
bool usor[NMAX],greu[NMAX];

void readQuery(){
    
    f >> k;
    
    for(int j = 1;j <= k;++j)
        f >> stanga[j];
    
    for(int j = 1;j <= k;++j)
        f >> dreapta[j];
    
    f >> result;
}

int main(){
    
    f >> n >> m;
    
    for(int i = 1;i <= n;++i)
        usor[i] = greu[i] = 1;
    
    for(int i = 1;i <= m;++i){
        
        readQuery();
        
        if(result == 0){
            for(int j = 1;j <= k;++j){
                usor[dreapta[j]] = greu[dreapta[j]] = 0;
                usor[stanga[j]] = greu[stanga[j]] = 0;
            }
        }
        
        if(result == 1){
            
            for(int j = 1;j <= k;++j){
                greu[dreapta[j]] = 0;
                usor[stanga[j]] = 0;
            }
        }
        
        if(result == 2){
            
            for(int j = 1;j <= k;++j){
                greu[stanga[j]] = 0;
                usor[dreapta[j]] = 0;
            }
        }
        
        /*
        for(int j = 1;j <= n;++j)
            g << usor[j] << ' ';
        
        g << '\n';
        
        for(int j = 1;j <= n;++j)
            g << greu[j] << ' ';
         */
    }
    
    int ones = 0;
    int pos = -1;
    
    for(int i = 1;i <= n && ones <= 1;++i){
        if(usor[i] == 1){
            ones++;
            pos = i;
        }
    }
    
    if(ones == 1){
        g << pos;
        return 0;
    }
    
    ones = 0;
    pos = -1;
    
    for(int i = 1;i <= n && ones <= 1;++i){
        if(greu[i] == 1){
            ones++;
            pos = i;
        }
    }
    
    if(ones == 1){
        g << pos;
        return 0;
    }
    
    g << 0;
    
    return 0;
}