Cod sursa(job #2547659)

Utilizator divianegoescuDivia Negoescu divianegoescu Data 15 februarie 2020 15:59:21
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <fstream>
#define K 1030
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int n,m,i,x,k,rez,st[K],dr[K],us[K],gr[K];
int main(){
    fin>>n>>m;
    for(;m--;){
        fin>>k;
        for(i=1;i<=n;i++) //initializez vectorii de frecventa a monedelor
            st[i]=dr[i]=0;
        for(i=1;i<=k;i++){ //monedele de pe talerul stang
            fin>>x;
            st[x]=1;
        }
        for(i=1;i<=k;i++){//monedele de pe talerul drept
            fin>>x;
            dr[x]=1;
        }
        fin>>rez;
        if(rez==0)//echilibru
            for(i=1;i<=n;i++)
                if(st[i] || dr[i]) //a fost cantarita
                    us[i]=gr[i]=1; //moneda ok
        if(rez==1)//st>dr
            for(i=1;i<=n;i++){
                if(st[i])us[i]=1; //e pe talerul greu => nu poate fi mai usoara
                if(dr[i])gr[i]=1; //e pe talerul usor => nu poate fi mai grea
                if(!st[i]&&!dr[i])//necantarita => ok;cea falsa e printre cele cantarite
                    us[i]=gr[i]=1;
            }
        if(rez==2)//st<dr
            for(i=1;i<=n;i++){
                if(st[i])gr[i]=1;
                if(dr[i])us[i]=1;
                if(!st[i]&&!dr[i])
                    us[i]=gr[i]=1;
            }
    }
    for(m=0,i=1;i<=n;i++){
        if(!us[i])
            m++,x=i;
        if(!gr[i])
            m++,x=i;
    }
    if(m==1)fout<<x;
    else fout<<0;
    return 0;
}