Cod sursa(job #2547782)

Utilizator MihneaGhiraMihnea MihneaGhira Data 15 februarie 2020 17:53:58
Problema Balanta Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.53 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int n,m,caz,k,nr1,nr2;
int fr1[1030],fr2[1030],fr[1030],v[2060];
int main(){
    fin>>n>>m;
    for(int i=1;i<=n;i++)
       fr1[i]=fr2[i]=1;

    for(int i=1;i<=m;i++){
        fin>>k;
        for(int j=1;j<=n;j++)
            fr[j]=0;
        for(int j=1;j<=2*k;j++){
            fin>>v[j];
            fr[v[j]]=1;
        }
        fin>>caz;
        if(caz==0){
            for(int j=1;j<=2*k;j++)
                fr1[v[j]]=fr2[v[j]]=0;
            continue;
        }
        if(caz==1){
            for(int j=1;j<=k;j++){
                fr1[v[j]]=0;
                fr2[v[k+j]]=0;
            }
            for(int j=1;j<=n;j++){
                if(fr[j]!=1){
                    fr1[j]=fr2[j]=0;
                }
            }
            continue;
        }
        if(caz==2){
            for(int j=k+1;j<=k*2;j++){
                fr1[v[j]]=0;
                fr2[v[j-k]]=0;
            }
            for(int j=1;j<=n;j++){
                if(fr[j]!=1){
                    fr1[j]=fr2[j]=0;
                }
            }
        }
    }
    for(int i=1;i<=n;i++){
        if(fr1[i]==1)
            nr1++;
        if(fr2[i]==1)
            nr2++;
    }
    if(nr1+nr2!=1){
        fout<<0;
    }
    else{
        for(int i=1;i<=n;i++){
            if(fr1[i]==1 || fr2[i]==1){
                fout<<i;
                break;
            }
        }
    }
    return 0;
}