Cod sursa(job #2737493)

Utilizator carinamariaCarina Maria Viespescu carinamaria Data 4 aprilie 2021 19:54:25
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.38 kb
#include <fstream>
using namespace std;
ifstream cin("balanta.in");
ofstream cout("balanta.out");
int i, j, x, n, m, st[1025], dr[1025], k, minim, p, nr, val, greu[1025], cnt, a[1025], posibil[1025];
int main() {
    cin>>nr>>m;
    for(j=1;j<=m;j++){
        cin>>n;
        for(i=1;i<=n;i++)
            cin>>st[i];
        for(i=1;i<=n;i++)
            cin>>dr[i];
        for(i=1;i<=nr;i++)
            a[i]=-1;
        cin>>val;
        if(val==0){
            for(i=1;i<=n;i++){
                posibil[st[i]]=-1;
                posibil[dr[i]]=-1;
                greu[st[i]]=0;
                greu[dr[i]]=0;
            }
        }
        else if(val==1){
            for(i=1;i<=n;i++){
                if(greu[st[i]]<0){
                    greu[st[i]]=0;
                    posibil[st[i]]=-1;
                }
                else
                    greu[st[i]]+=1;
                if(greu[dr[i]]>0){
                    greu[dr[i]]=0;
                    posibil[dr[i]]=-1;
                }
                else
                    greu[dr[i]]-=1;
                a[st[i]]=1;
                a[dr[i]]=1;
            }
            for(i=1;i<=nr;i++)
                if(a[i]==-1)
                    posibil[i]=-1;
        }
        else if(val==2){
            for(i=1;i<=n;i++){
                if(greu[st[i]]>0){
                    greu[st[i]]=0;
                    posibil[st[i]]=-1;
                }
                else
                    greu[st[i]]-=1;
                if(greu[dr[i]]<0){
                    greu[dr[i]]=0;
                    posibil[dr[i]]=-1;
                }
                else
                    greu[dr[i]]+=1;
                a[st[i]]=1;
                a[dr[i]]=1;
            }
            for(i=1;i<=nr;i++)
                if(a[i]==-1)
                    posibil[i]=-1;
        }
    }
//    for(i=1;i<=nr;i++)
//            cout<<greu[i]<<" "<<i<<" "<<posibil[i]<<"\n";
    for(i=1;i<=nr;i++){
        if(greu[i]!=0 && posibil[i]==0){
            cnt++;
        }
        ///cout<<greu[i]<<" "<<f[i]<<" "<<i<<"\n";
    }
        if(cnt==1){
            for(i=1;i<=nr;i++){
                if(greu[i]!=0 && posibil[i]==0){
                    cout<<i;
                    return 0;
                }
            }
        }
        else{
            cout<<0;
            return 0;
        }

}