Cod sursa(job #1657890)

Utilizator DeehoroEjkoliPop Darian DeehoroEjkoli Data 20 martie 2016 21:16:11
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.81 kb
#include <fstream>
#include <vector>
#include <cmath>
#define nmax 1025
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");

struct bal_ {
    int value;
    bool not_;
} v[nmax];

int main()
{
    int n, m, t;
    fin >> n >> m;
    for (int i = 1; i <= m; ++i) {
        int x, y;
        fin >> x;
        vector < int > v1, v2;
        for (int j = 1; j <= x; ++j) {
            int k;
            fin >> k;
            v1.push_back(k);
        }
        for (int j = 1; j <= x; ++j) {
            int k;
            fin >> k;
            v2.push_back(k);
        }
        fin >> y;
        if (y == 0) {
            for (int u = 0; u <= v1.size() - 1; ++u)
                v[v1[u]].not_ = true;
            for (int u = 0; u <= v2.size() - 1; ++u)
                v[v2[u]].not_ = true;
        }
        if (y == 1) {
            for (int u = 0; u <= v1.size() - 1; ++u)
                ++v[v1[u]].value;
            for (int u = 0; u <= v2.size() - 1; ++u)
                --v[v2[u]].value;
        }
        if (y == 2) {
            for (int u = 0; u <= v1.size() - 1; ++u)
                --v[v1[u]].value;
            for (int u = 0; u <= v2.size() - 1; ++u)
                ++v[v2[u]].value;
        }
    }
    bool is = false;
    int mx = 0, j;
    for (int i = 1; i <= n; ++i) {
        if (v[i].not_)
            continue;
        int now = abs(v[i].value);
        if (now == mx and mx == 0)
            t = i;
        if (now == mx and mx != 0) {
            is = true;
        }
        else if (mx < now) {
            is = false;
            mx = now;
            j = i;
        }
    }
    if (is)
        fout << 0;
    else {
        if (mx != 0)
            fout << j;
        else
            fout << t;
    }
    return 0;
}