Cod sursa(job #2845100)

Utilizator handicapatucavasi eduard handicapatu Data 7 februarie 2022 14:49:11
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n , m , k , r , maxim1 = -1 , maxim2 = -1 , poz1 , poz2 , fr1 , fr2;
int t1[1024] , t2[1024] , fru[1024] , frg[1024];

int main()
{
    f >> n >> m;
    for(int i = 1 ; i <= m ; ++i){
        f >> k;
        for(int j = 1 ; j <= k ; ++j)
            f >> t1[j];
        for(int j = 1 ; j <= k ; ++j)
            f >> t2[j];
        f >> r;
        if(r == 0)
            for(int j = 1 ; j <= k ; ++j)
                --fru[t1[j]] , --fru[t2[j]] , --frg[t1[j]] , --frg[t2[j]];
        else if(r == 1)
            for(int j = 1 ; j <= k ; ++j)
                ++fru[t2[j]] , --fru[t1[j]] , ++frg[t1[j]] , --frg[t2[j]];
        else if(r == 2)
            for(int j = 1 ; j <= k ; ++j)
                --fru[t2[j]] , ++fru[t1[j]] , --frg[t1[j]] , ++frg[t2[j]];
    }
    for(int i = 1 ; i <= n ; ++i){
        if(fru[i] > maxim1 && fru[i] >= 0)
            maxim1 = fru[i] , poz1 = i , fr1 = 0;
        if(fru[i] == maxim1 && fru[i] >= 0)
            ++fr1;
    }
    for(int i = 1 ; i <= n ; ++i){
        if(frg[i] > maxim2 && frg[i] >= 0)
            maxim2 = frg[i] , poz2 = i , fr2 = 0;
        if(frg[i] == maxim2 && frg[i] >= 0)
            ++fr2;
    }
    if(fr1 == fr2 && fr1 == 1 && maxim1 != 0 && maxim2 != 0){
        g << 0;
        return 0;
    }
    if(fr1 == 1){
        g << poz1;
        return 0;
    }
    if(fr2 == 1){
        g << poz2;
        return 0;
    }
    g << 0;
    return 0;
}