Cod sursa(job #1571642)

Utilizator mariusn01Marius Nicoli mariusn01 Data 18 ianuarie 2016 11:49:18
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.31 kb
#include <fstream>

using namespace std;

int G[1100], U[1100];
int A[1100], B[1100];
int n, m, i, j, k, r, g, u, mon, x;

int main () {
    ifstream fin("balanta.in");
    ofstream fout("balanta.out");

    fin>>n>>m;
    for (i=1;i<=n;i++) {
        U[i] = 1;
        G[i] = 1;
    }

    for (i=1;i<=m;i++) {
        fin>>k;
        // a si b sunyt cu monede de la cantarirea curenta
        for (j=1;j<=n;j++) {
            A[j] = 0;
            B[j] = 0;
        }
        for (j=1;j<=k;j++) {
            fin>>x;
            A[x] = 1;
        }
        for (j=1;j<=k;j++) {
            fin>>x;
            B[x] = 1;
        }

        fin>>r;
        if (r == 0) {
            // tot ce e marcat cu u in A si in B nu e nici grea nici usoara
            for (j=1;j<=n;j++) {
                if (A[j] == 1 || B[j] == 1) {
                    G[j] = 0;
                    U[j] = 0;
                }
            }
        }

        if (r == 1) {
            // tot ce e setat cu 1 in A nu este usoara
            // tot ce e setat cu 1 in B nu este grea
            // tot ce e nesetat in ambele nu e nici grea nici usoara

            for (j=1;j<=n;j++) {
                if (A[j] == 1) {
                    U[j] = 0;
                }
                if (B[j] == 1){
                    G[j] = 0;
                }
                if (A[j] + B[j] == 0) {
                    U[j] = 0;
                    G[j] = 0;
                }

            }

        }

        if (r == 2) {
            // tot ce e setat cu 1 in A nu este usoara
            // tot ce e setat cu 1 in B nu este grea
            // tot ce e nesetat in ambele nu e nici grea nici usoara

            for (j=1;j<=n;j++) {
                if (A[j] == 1) {
                    G[j] = 0;
                }
                if (B[j] == 1){
                    U[j] = 0;
                }
                if (A[j] + B[j] == 0) {
                    U[j] = 0;
                    G[j] = 0;
                }

            }

        }


    }

    for (i=1;i<=n;i++) {
        if (G[i] == 1) {
            g++;
            mon = i;
        }
        if (U[i] == 1) {
            u++;
            mon = i;
        }
    }

    if (g + u == 1)
        fout<<mon;
    else
        fout<<0;


}