Cod sursa(job #2097407)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 31 decembrie 2017 11:55:28
Problema Balanta Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.98 kb
#include <fstream>
#define DIM 1030

using namespace std;

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

int n, m, val[DIM], x[DIM], y[DIM], nr, tip;

int check(){
    int poz1, poz2, poz3, nr1 = 0, nr2 = 0, nr3 = 0;
    for(int i = 1; i <= n; ++ i){
        if(val[i] == 1){
            poz1 = i;
            ++ nr1;
        }
        if(val[i] == 2){
            poz2 = i;
            ++ nr2;
        }
        if(val[i] == -1){
            poz3 = i;
            ++ nr3;
        }
    }
    if(nr1 == 1 && nr2 != 1 && nr3 != 1)
        return poz1;
    if(nr2 == 1 && nr1 != 1 && nr3 != 1)
        return poz2;
    if(nr3 == 1 && nr1 != 1 && nr2 != 1)
        return poz3;
    return 0;
}

int main()
{
    f>>n>>m;
    for(int i = 1; i <= n; ++ i)
        val[i] = -1;
    for(int i = 1; i <= m; ++ i){
        f>>nr;
        for(int j = 1; j <= nr; ++ j)
            f>>x[j];
        for(int j = 1; j <= nr; ++ j)
            f>>y[j];
        f>>tip;
        if(tip == 0)
            for(int j = 1; j <= nr; ++ j)
                val[x[j]] = val[y[j]] = 0;
        if(tip == 1){
            for(int j = 1; j <= nr; ++ j){
                if(val[x[j]] == -1)
                    val[x[j]] = 1;
                else if(val[x[j]] == 2)
                    val[x[j]] = 0;

                if(val[y[j]] == -1)
                    val[y[j]] = 2;
                else if(val[y[j]] == 1)
                    val[y[j]] = 0;
            }
        }
        if(tip == 2){
            for(int j = 1; j <= nr; ++ j){
                if(val[x[j]] == -1)
                    val[x[j]] = 2;
                else if(val[x[j]] == 1)
                    val[x[j]] = 0;

                if(val[y[j]] == -1)
                    val[y[j]] = 1;
                else if(val[y[j]] == 2)
                    val[y[j]] = 0;
            }
        }
        if(check()){
            g<<check();
            return 0;
        }
    }
    g<<0;
    return 0;
}