Cod sursa(job #2099074)

Utilizator luanastLuana Strimbeanu luanast Data 3 ianuarie 2018 22:26:40
Problema Balanta Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.44 kb
#include <fstream>
using namespace std;
ifstream fin ("balanta.in");
ofstream fout ("balanta.out");
int n,m,i,j,dr[520],st[520],w[1030],k,r,fals,falsm;
int main(){
    fin>>n>>m;
    //-1 = aur sigur
    //0 = neverificat
    //1 = mai usor
    //2 = mai greu
    for(i=1;i<=m;i++){
        fin>>k;
        for(j=1;j<=k;j++)
            fin>>st[j];
        for(j=1;j<=k;j++)
            fin>>dr[j];
        fin>>r;
        if(r==0){
            for(j=1;j<=k;j++)
                w[st[j]]=-1;
            for(j=1;j<=k;j++)
                w[dr[j]]=-1;
        }
        if(r==1){
            for(j=1;j<=k;j++){
                if(w[st[j]]!=-1){
                    if(w[st[j]]==2){
                        fals++;
                        falsm=st[j];
                    }
                    if(w[st[j]]==1)
                        w[st[j]]=-1;
                    if(w[st[j]]==0)
                        w[st[j]]=2;
                }
            }
            for(j=1;j<=k;j++){
                if(w[dr[j]]!=-1){
                    if(w[dr[j]]==1){
                        fals++;
                        falsm=dr[j];
                    }
                    if(w[dr[j]]==2)
                        w[dr[j]]=-1;
                    if(w[dr[j]]==0)
                        w[dr[j]]=1;
                }
            }
            if(fals==1){
                fout<<falsm;
                return 0;
            }
            else
                fals=0;
        }
        if(r==2){
            for(j=1;j<=k;j++){
                if(w[st[j]]!=-1){
                    if(w[st[j]]==1){
                        fals++;
                        falsm=st[j];
                    }
                    if(w[st[j]]==2)
                        w[st[j]]=-1;
                    if(w[st[j]]==0)
                        w[st[j]]=1;
                }
            }
            for(j=1;j<=k;j++){
                if(w[dr[j]]!=-1){
                    if(w[dr[j]]==2){
                        fals++;
                        falsm=dr[j];
                    }
                    if(w[dr[j]]==1)
                        w[dr[j]]=-1;
                    if(w[dr[j]]==0)
                        w[dr[j]]=2;
                }
            }
            if(fals==1){
                fout<<falsm;
                return 0;
            }
            else
                fals=0;
        }
    }
    fout<<"0";
    return 0;
}