Cod sursa(job #3142498)

Utilizator maryyMaria Ciutea maryy Data 21 iulie 2023 23:25:20
Problema Balanta Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <fstream>

using namespace std;
ifstream in("balanta.in");
ofstream out("balanta.out");
struct comparation
{
    int k, a[520], b[520], r;
}o[1025];
int f[1025];
bool app[1025];
int n, m;
void ReadData()
{
    in>>n>>m;
    for(int i=1; i<=m; i++)
    {
        in>>o[i].k;
        for(int j=1; j<=o[i].k; j++)
        {
            in>>o[i].a[j];
            app[o[i].a[j]]++;
        }
        for(int j=1; j<=o[i].k; j++)
        {
            in>>o[i].b[j];
            app[o[i].b[j]]++;
        }
        in>>o[i].r;
    }
}
void BuildF()
{
    for(int i=1; i<=m; i++)
    {
        for(int j=1; j<=o[i].k; j++)
        {
            if(o[i].r==1)
                f[o[i].a[j]]++;
            else if(o[i].r==2)
                f[o[i].a[j]]--;
        }
        for(int j=1; j<=o[i].k; j++)
        {
            if(o[i].r==1)
                f[o[i].b[j]]--;
            else if(o[i].r==2)
                f[o[i].b[j]]++;
        }
    }
}
int main()
{
    ReadData();
    BuildF();
    int maxi=0, val=0;
    for(int i=1; i<=n; i++)
    {
        if(abs(f[i])>maxi)
        {
            maxi=abs(f[i]);
            val=i;
        }
    }
    if(maxi==0)
    {
        for(int i=1; i<=n; i++)
        {
            if(app[i]==0)
            {
                out<<i;
                return 0;
            }
        }
    }
    for(int i=1; i<=n; i++)
    {
        if(abs(f[i])==maxi && i!=val)
        {
            out<<0;
            return 0;
        }
    }
    out<<val;
}