제출 #1176550

#제출 시각아이디문제언어결과실행 시간메모리
1176550IrateICC (CEOI16_icc)C++20
0 / 100
79 ms584 KiB
#include "icc.h"
#include<bits/stdc++.h>
using namespace std;
const int mxN = 105;
bool G[mxN][mxN];
int query(int sza, int szb, int a[], int b[]);
// {
//     for(int i = 0;i < sza;++i){
//         cout << a[i] << ' ';
//     }
//     cout << ": ";
//     for(int i = 0;i < szb;++i){
//         cout << b[i] << ' ';
//     }
//     int ans;
//     cin >> ans;
//     return ans;
// }
int Query(int sza, int szb, vector<int>a, vector<int>b){
    int A[sza], B[szb];
    for(int i = 0;i < sza;++i){
        A[i] = a[i];
    }
    for(int i = 0;i < szb;++i){
        B[i] = b[i];
    }
    return query(sza, szb, A, B);
}
// void setRoad(int a, int b)
// {
//     cout << "Found: " << a << " " << b << '\n';
// }
void run(int n){
    srand(time(0));
    for(int k = 0;k < n - 1;++k){
        vector<int>V;
        for(int i = 1;i <= n;++i){
            V.push_back(i);
        }
        int node = -1, node2 = -1;
        vector<int>a, b;
        do{
            a.clear();
            b.clear();
            int indx = rand() % (int)V.size();
            node = V[indx];
            a.push_back(node);
            V.erase(V.begin() + indx);
            for(int i = 0;i < (int)V.size();++i){
                if(!G[node][V[i]]){
                    b.push_back(V[i]);
                }
            }
        }while(!Query(a.size(), b.size(), a, b));
        int l = 0, r = b.size() - 1, ans = -1;
        while(l <= r){
            int mid = (l + r) / 2;
            vector<int>temp;
            for(int i = 0;i <= mid;++i){
                temp.push_back(b[i]);
            }
            if(Query(a.size(), temp.size(), a, temp)){
                ans = mid;
                r = mid - 1;
            }
            else{
                l = mid + 1;
            }
        }
        node2 = b[ans];
        setRoad(node, node2);
        G[node][node2] = G[node2][node] = 1;
    }
}
// int main(){
//     // ios_base::sync_with_stdio(0);
//     // cin.tie(0);
//     int n;
//     cin >> n;

//     run(n);
// }
#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...