Cod sursa(job #2548540)

Utilizator mirceaisherebina mircea mirceaishere Data 16 februarie 2020 19:44:56
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.31 kb
#include <fstream>
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");

int n, m, i, j, t, nr, x, caz, nrsol, indice;
int usor[1030], greu[1030], sir1[1030], sir2[1030];

int main(){
    fin>>n>>m;
    for(i=1; i<=n; i++){
        usor[i]=1;
        greu[i]=1;
    }
    for(t=1; t<=m; t++){
        /// initializez sirurile cu 0
        for(i=1; i<=n; i++){
            sir1[i]=0;
            sir2[i]=0;
        }
        fin>>nr;
        for(i=1; i<=nr; i++){
            fin>>x;
            sir1[x]=1;
        }
        for(i=1; i<=nr; i++){
            fin>>x;
            sir2[x]=1;
        }
        fin>>caz;
        if(caz==0){
            /// toate nr din siruri sunt bune
            for(i=1; i<=n; i++){
                if(sir1[i]==1 || sir2[i]==1){
                    usor[i]=0;
                    greu[i]=0;
                }
            }
        }else{
            if(caz==1){
                /// sir1 mai greu decat sir2
                /// daca nu apar in niciunul din cele 2 siruri sunt bune
                for(i=1; i<=n; i++){
                    if(sir1[i]==0 && sir2[i]==0){
                        usor[i]=0;
                        greu[i]=0;
                    }
                    if(sir1[i]==1){
                        usor[i]=0;
                    }
                    if(sir2[i]==1){
                        greu[i]=0;
                    }
                }
            }else{
                /// sir1 mai usor decat sir2
                /// daca nu apar in niciunul din cele 2 siruri sunt bune
                for(i=1; i<=n; i++){
                    if(sir1[i]==0 && sir2[i]==0){
                        usor[i]=0;
                        greu[i]=0;
                    }
                    if(sir1[i]==1){
                        greu[i]=0;
                    }
                    if(sir2[i]==1){
                        usor[i]=0;
                    }
                }
            }
        }
    }
    for(i=1; i<=n; i++){
        if(usor[i]==1){
            nrsol++;
            indice=i;
        }
        if(greu[i]==1){
            nrsol++;
            indice=i;
        }
    }
    if(nrsol==1){
        /// am gasit rezultatul cu siguranta
        fout<<indice;
    }else{
        fout<<0;
    }
}