답안 #585626

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
585626 2022-06-29T06:37:58 Z 반딧불(#8385) CEOI16_icc (CEOI16_icc) C++14
0 / 100
291 ms 504 KB
#include "icc.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

int qa[105], qb[105];
int query(vector<int> a, vector<int> b){
    if(a.empty() || b.empty()) return false;
    for(int i=0; i<(int)a.size(); i++) qa[i] = a[i];
    for(int i=0; i<(int)b.size(); i++) qb[i] = b[i];
    return query(a.size(), b.size(), qa, qb);
}

struct unionFind{
    int par[105];
    void init(int _n){
        for(int i=1; i<=_n; i++) par[i] = i;
    }

    int find(int x){
        if(x==par[x]) return x;
        return par[x] = find(par[x]);
    }

    void merge(int x, int y){
        x = find(x), y = find(y);
        par[x] = y;
    }
} dsu;

int n;
bool arr[105][105];

void run(int N){
    n = N;
    dsu.init(n);
    for(int i=1; i<n; i++){
        int X=-1, Y=-1;
        for(int j=1; j<=n; j++){
            vector<int> v;
            for(int x=j+1; x<=n; x++) if(!arr[j][x]) v.push_back(x);
            if(!query(vector<int>(1, j), v)) continue;
            for(auto y: v){
                if(!query(vector<int>(1, j), vector<int>(1, y))) continue;
                X = j, Y = y;
                break;
            }
            break;
        }
        assert(X!=-1);
        setRoad(X, Y);
        arr[X][Y] = arr[Y][X] = 1;
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 468 KB Ok! 210 queries used.
2 Incorrect 5 ms 468 KB Wrong road!
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 500 KB Wrong road!
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 291 ms 496 KB Number of queries more than 4500 out of 2250
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 57 ms 468 KB Wrong road!
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 39 ms 504 KB Wrong road!
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 229 ms 504 KB Number of queries more than 3250 out of 1625
2 Halted 0 ms 0 KB -