Cod sursa(job #2620887)

Utilizator eusebiu_alexandruMorar Eusebiu eusebiu_alexandru Data 29 mai 2020 20:15:11
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.57 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;
	
    }
	
}