Cod sursa(job #1545027)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 6 decembrie 2015 14:58:50
Problema Balanta Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.65 kb
#include<cstdio>
using namespace std;
int heavy[1030],light[1030],left[1030],right[1030];
int main(){
    freopen("balanta.in","r",stdin);
    freopen("balanta.out","w",stdout);
    int n,m,i,j,q,k,result,nrheavy,nrlight;
    scanf("%d%d",&n,&m);
    nrheavy=nrlight=n;
    for(i=1;i<=n;i++)
        heavy[i]=light[i]=1;
    for(q=1;q<=m;q++){
        scanf("%d",&k);
        for(i=1;i<=k;i++)
            scanf("%d",&left[i]);
        for(i=1;i<=k;i++)
            scanf("%d",&right[i]);
        scanf("%d",&result);
        if(result==0)
            for(i=1;i<=k;i++){
                if(heavy[left[i]]==1){
                    heavy[left[i]]=0;
                    nrheavy--;
                }
                if(heavy[right[i]]==1){
                    heavy[right[i]]=0;
                    nrheavy--;
                }
                if(light[left[i]]==1){
                    light[left[i]]=0;
                    nrlight--;
                }
                if(light[right[i]]==1){
                    light[right[i]]=0;
                    nrlight--;
                }
            }
        if(result==1){
            j=1;
            for(i=1;i<=n;i++){
                if(heavy[i]==0)
                    continue;
                if(left[j]!=i){
                    nrheavy--;
                    heavy[i]=0;
                    continue;
                }
                j++;
            }
            j=1;
            for(i=1;i<=n;i++){
                if(light[i]==0)
                    continue;
                if(right[j]!=i){
                    nrlight--;
                    light[i]=0;
                    continue;
                }
                j++;
            }
        }
        if(result==2){
            j=1;
            for(i=1;i<=n;i++){
                if(heavy[i]==0)
                    continue;
                if(right[j]!=i){
                    nrheavy--;
                    heavy[i]=0;
                    continue;
                }
                j++;
            }
            j=1;
            for(i=1;i<=n;i++){
                if(light[i]==0)
                    continue;
                if(left[j]!=i){
                    nrlight--;
                    light[i]=0;
                    continue;
                }
                j++;
            }
        }
    }
    if(nrheavy+nrlight!=1){
        printf("0");
        return 0;
    }
    if(nrheavy==1){
        for(i=1;i<=n;i++)
            if(heavy[i]==1)
                printf("%d",i);
    }
    else
        for(i=1;i<=n;i++)
            if(light[i]==1)
                printf("%d",i);
    return 0;
}