제출 #602988

#제출 시각아이디문제언어결과실행 시간메모리
602988mosiashvililuka장난감 기차 (IOI17_train)C++14
100 / 100
619 ms3484 KiB
#include<bits/stdc++.h>
#include "train.h"
using namespace std;
int a,b,c,d,e,i,j,ii,jj,zx,xc,f[5009],g[5009],k[5009],boA[5009],boB[5009],bo[5009],p[5009],pi;
vector <int> S,X,ans;
set <int> v[5009],V[5009];
void adA(int q){
    for(set <int>::iterator it=V[q].begin(); it!=V[q].end(); it++){
        //if(bo[(*it)]==1) continue;
        if(boA[(*it)]==1) continue;
        if(f[(*it)]==1){
            boA[(*it)]=1;
            S.push_back((*it));
        }else{
            k[(*it)]--;
            if(k[(*it)]==0){
                boA[(*it)]=1;
                S.push_back((*it));
            }
        }
    }
}
void adB(int q){
    for(set <int>::iterator it=V[q].begin(); it!=V[q].end(); it++){
        //if(bo[(*it)]==1) continue;
        if(boB[(*it)]==1) continue;
        if(f[(*it)]==0){
            boB[(*it)]=1;
            X.push_back((*it));
        }else{
            k[(*it)]--;
            if(k[(*it)]==0){
                boB[(*it)]=1;
                X.push_back((*it));
            }
        }
    }
}
vector<int> who_wins(std::vector<int> Aa, std::vector<int> Rr, std::vector<int> Uu, std::vector<int> Vv) {
    a=Aa.size();b=Uu.size();
    for(i=1; i<=a; i++) f[i]=Aa[i-1];
    for(i=1; i<=a; i++) g[i]=Rr[i-1];
    for(i=0; i<b; i++){
        Uu[i]++;Vv[i]++;
        v[Uu[i]].insert(Vv[i]);
        V[Vv[i]].insert(Uu[i]);
    }
    while(1){
    //
    S.clear();X.clear();
    for(i=1; i<=a; i++){
        /*if(bo[i]==0){
            boA[i]=boB[i]=0;
        }else{
            boA[i]=boB[i]=1;
        }*/
        boA[i]=boB[i]=0;
    }
    for(i=1; i<=a; i++){
        if(bo[i]==1) continue;
        k[i]=v[i].size();
    }
    for(i=1; i<=a; i++){
        if(bo[i]==1) continue;
        if(g[i]==1){
            S.push_back(i);boA[i]=1;
        }
    }
    for(ii=0; ii<S.size(); ii++){
        adA(S[ii]);
    }
    for(i=1; i<=a; i++){
        if(bo[i]==1) continue;
        if(boA[i]==0){
            X.push_back(i);boB[i]=1;
        }
    }
    for(i=1; i<=a; i++){
        if(bo[i]==1) continue;
        k[i]=v[i].size();
    }
    for(ii=0; ii<X.size(); ii++){
        adB(X[ii]);
    }
    if(X.size()==0){
        for(i=1; i<=a; i++){
            if(bo[i]==0) ans.push_back(1); else ans.push_back(0);
        }
        return ans;
    }
    for(ii=0; ii<X.size(); ii++){
        i=X[ii];
        for(set <int>::iterator it=v[i].begin(); it!=v[i].end(); it++){
            V[(*it)].erase(V[(*it)].find(i));
        }
        v[i].clear();
        for(set <int>::iterator it=V[i].begin(); it!=V[i].end(); it++){
            v[(*it)].erase(v[(*it)].find(i));
        }
        V[i].clear();
    }
    for(ii=0; ii<X.size(); ii++){
        i=X[ii];
        bo[i]=1;
    }
    //
    }
}

컴파일 시 표준 에러 (stderr) 메시지

train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:69:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |     for(ii=0; ii<S.size(); ii++){
      |               ~~^~~~~~~~~
train.cpp:82:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |     for(ii=0; ii<X.size(); ii++){
      |               ~~^~~~~~~~~
train.cpp:91:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |     for(ii=0; ii<X.size(); ii++){
      |               ~~^~~~~~~~~
train.cpp:102:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  102 |     for(ii=0; ii<X.size(); ii++){
      |               ~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...