| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 295756 | eohomegrownapps | 늑대인간 (IOI18_werewolf) | C++14 | 384 ms | 54492 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "werewolf.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> l;
vector<int> r;
int n,q;
vector<vector<int>> adjlist;
bool comp_l(int a, int b){
    return l[a]<=l[b];
}
bool comp_r(int a, int b){
    return r[a]>=r[b];
}
std::vector<int> check_validity(int N, std::vector<int> x, std::vector<int> y,
                                std::vector<int> s, std::vector<int> e,
                                std::vector<int> L, std::vector<int> R) {
    q = s.size();
    l=L;r=R;n=N;
    adjlist.resize(n);
    for (int i = 0; i<x.size(); i++){
        //cout<<x[i]<<' '<<y[i]<<endl;
        adjlist[x[i]].push_back(y[i]);
        adjlist[y[i]].push_back(x[i]);
    }
    int start = -1;
    for (int i = 0; i<n; i++){
        if (adjlist[i].size()==1){
            start=i;
            break;
        }
    }
    int cur = start;
    int pre = -1;
    int ptr = 0;
    int pop2ind[200005];
    int ind2pop[200005];
    do {
        pop2ind[cur]=ptr;
        ind2pop[ptr]=cur;
        if (adjlist[cur][0]==pre){
            pre=cur;
            cur=adjlist[cur][1];
        } else {
            pre=cur;
            cur=adjlist[cur][0];
        }
        ptr++;
    } while (adjlist[cur].size()!=1);
    pop2ind[cur]=ptr;
    ind2pop[ptr]=cur;
    /*for (int i = 0; i<n; i++){
        cout<<ind2pop[i]<<' ';
    }cout<<'\n';*/
    vector<int> intsl(q);
    vector<int> intsr(q);
    vector<int> intel(q);
    vector<int> inter(q);
    vector<int> inds(q);
    for (int i = 0; i<q; i++){
        inds[i]=i;
    }
    sort(inds.begin(), inds.end(), comp_l);
    
    int prevl = 0;
    set<int> lpoints;
    lpoints.insert(-1);
    lpoints.insert(n);
    for (int i = 0; i<q; i++){
        while (prevl<l[inds[i]]){
            lpoints.insert(pop2ind[prevl]);
            prevl++;
        }
        auto lb = lpoints.lower_bound(pop2ind[s[inds[i]]]);
        intsl[inds[i]]=*(prev(lb))+1;
        intsr[inds[i]]=*lb-1;
    }
    sort(inds.begin(), inds.end(), comp_r);
    int prevr = n-1;
    set<int> rpoints;
    rpoints.insert(-1);
    rpoints.insert(n);
    for (int i = 0; i<q; i++){
        while (prevr>r[inds[i]]){
            rpoints.insert(pop2ind[prevr]);
            prevr--;
        }
        auto lb = rpoints.lower_bound(pop2ind[e[inds[i]]]);
        intel[inds[i]]=*(prev(lb))+1;
        inter[inds[i]]=*lb-1;
    }
    vector<int> ans(q);
    for (int i = 0; i<q; i++){
        //cout<<"human: "<<intsl[i]<<' '<<intsr[i]<<'\n';
        //cout<<"werewolf: "<<intel[i]<<' '<<inter[i]<<'\n';
        if (!(inter[i]<intsl[i]||intsr[i]<intel[i])){
            ans[i]=1;
        } else {
            ans[i]=0;
        }
    }
    return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
