답안 #101233

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
101233 2019-03-18T02:47:13 Z ShaneOng CEOI16_icc (CEOI16_icc) C++14
컴파일 오류
0 ms 0 KB
#include "icc.h"
using namespace std;

typedef pair<int,int> ii;
vector<int> col,adj[109];
void dfs(int u){
    for(int v:adj[u]){
        if(col[v]==-1){
            col[v]=1-col[u];
            dfs(v);
        }
    }
}
ii stuff(vector<int> a,vector<int> b){
    int qu=query(a.size(),b.size(),&a[0],&b[0]);
    /*printf("\na:");
    for(int x:a)
        printf("%d ",x);
    printf("\n");
    printf("b:");
    for(int x:b)
        printf("%d ",x);
    printf("\n");*/
    int na=(int)a.size(),nb=(int)b.size();
    ii res=ii(-1,-1);
    if(qu==0){
        vector<int> aa,ab,ba,bb;
        if(na>1){
            for(int x=0;x<na;x++){
                if(x<na/2)
                    aa.push_back(a[x]);
                else
                    ab.push_back(a[x]);
            }
            res=max(res,stuff(aa,ab));
        }
        if(nb>1){
            for(int x=0;x<nb;x++){
                if(x<nb/2)
                    ba.push_back(b[x]);
                else
                    bb.push_back(b[x]);
            }
            res=max(res,stuff(ba,bb));
        }

        return res;
    }else{
        while((int)a.size()>1){
            vector<int> a1,a2;
            for(int x=0;x<(int)a.size();x++){
                if(x<(int)a.size()/2)
                    a1.push_back(a[x]);
                else
                    a2.push_back(a[x]);
            }
            int qu=query(a1.size(),b.size(),&a1[0],&b[0]);
            if(qu==0){
                a=a2;
            }else
                a=a1;
        }
        while((int)b.size()>1){
            vector<int> b1,b2;
            for(int x=0;x<(int)b.size();x++){
                if(x<(int)b.size()/2)
                    b1.push_back(b[x]);
                else
                    b2.push_back(b[x]);
            }
            int qu=query(a.size(),b1.size(),&a[0],&b1[0]);
            if(qu==0){
                b=b2;
            }else
                b=b1;
        }
        //printf("%d %d\n",a[0],b[0]);
        return ii(a[0],b[0]);

    }
}
void run(int n) {
    for(int x=0;x<n-1;x++){
        col.assign(n,-1);
        vector<int> arr[4];
        for(int y=0;y<n;y++){
            if(col[y]==-1){
                col[y]=y%2;
                arr[y%2].push_back(y+1);
                dfs(y);
            }else{
                arr[col[y]+2].push_back(y+1);
            }
        }
        ii ans=max(stuff(arr[0],arr[2]),stuff(arr[1],arr[3]));
        adj[ans.first-1].push_back(ans.second-1);
        adj[ans.second-1].push_back(ans.first-1);
        //printf("%d %d\n",ans.first,ans.second);
        setRoad(ans.first,ans.second);
    }
}

Compilation message

icc.cpp:4:9: error: 'pair' does not name a type
 typedef pair<int,int> ii;
         ^~~~
icc.cpp:5:1: error: 'vector' does not name a type
 vector<int> col,adj[109];
 ^~~~~~
icc.cpp: In function 'void dfs(int)':
icc.cpp:7:15: error: 'adj' was not declared in this scope
     for(int v:adj[u]){
               ^~~
icc.cpp:8:12: error: 'col' was not declared in this scope
         if(col[v]==-1){
            ^~~
icc.cpp:8:12: note: suggested alternative: 'bool'
         if(col[v]==-1){
            ^~~
            bool
icc.cpp: At global scope:
icc.cpp:14:1: error: 'ii' does not name a type
 ii stuff(vector<int> a,vector<int> b){
 ^~
icc.cpp: In function 'void run(int)':
icc.cpp:84:9: error: 'col' was not declared in this scope
         col.assign(n,-1);
         ^~~
icc.cpp:84:9: note: suggested alternative: 'bool'
         col.assign(n,-1);
         ^~~
         bool
icc.cpp:85:9: error: 'vector' was not declared in this scope
         vector<int> arr[4];
         ^~~~~~
icc.cpp:85:16: error: expected primary-expression before 'int'
         vector<int> arr[4];
                ^~~
icc.cpp:89:17: error: 'arr' was not declared in this scope
                 arr[y%2].push_back(y+1);
                 ^~~
icc.cpp:92:17: error: 'arr' was not declared in this scope
                 arr[col[y]+2].push_back(y+1);
                 ^~~
icc.cpp:95:9: error: 'ii' was not declared in this scope
         ii ans=max(stuff(arr[0],arr[2]),stuff(arr[1],arr[3]));
         ^~
icc.cpp:96:9: error: 'adj' was not declared in this scope
         adj[ans.first-1].push_back(ans.second-1);
         ^~~
icc.cpp:96:13: error: 'ans' was not declared in this scope
         adj[ans.first-1].push_back(ans.second-1);
             ^~~