Submission #617181

# Submission time Handle Problem Language Result Execution time Memory
617181 2022-08-01T09:23:04 Z 박상훈(#8502) Chameleon's Love (JOI20_chameleon) C++17
24 / 100
53 ms 484 KB
#include "chameleon.h"
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

namespace {

int n, qcnt;
bool chk[1010], ok[1010];
vector<int> a, adj[1010];

bool myquery(int l, int r, vector<int> v){
    assert(++qcnt<=17000);
    vector<int> Q = v;
    for (int i=l;i<=r;i++) Q.push_back(a[i]);
    return Query(Q)!=(int)Q.size();
}

}  // namespace



void Solve(int N) {
    n = N;
    vector<int> V;
    for (int i=1;i<=n*2;i++){
        V.push_back(i);
        if (myquery(0, -1, V)) V.pop_back();
    }

    //for (auto &x:V) printf("%d ", x);
    //printf("\n");
    assert((int)V.size()==n);

    a.push_back(0);
    for (int i=1;i<=n;i++){
        a.push_back(V[i-1]);
        ok[V[i-1]] = 1;
    }
    for (int i=1;i<=n*2;i++) if (!ok[i]) a.push_back(i);

    for (int i=1;i<=n;i++){
        int prv = n;
        while(true){
            int l = prv+1, r = n*2-1, idx = n*2;
            if (!myquery(l, n*2, {a[i]})) break;

            while(l<=r){
                int m = (l+r)>>1;
                if (myquery(prv+1, m, {a[i]})) r = m-1, idx = m;
                else l = m+1;
            }

            adj[a[i]].push_back(a[idx]);
            adj[a[idx]].push_back(a[i]);
            prv = idx;
        }

        /*printf("%d: ", i);
        for (auto &x:adj[i]) printf("%d ", x);
        printf("\n");*/
    }



    /*for (int i=1;i<=n*2;i++){
        for (int j=i+1;j<=n*2;j++){
            if (Query({i, j})==1){
                adj[i].push_back(j);
                adj[j].push_back(i);
            }
        }
    }*/

    for (int i=1;i<=n*2;i++) if (adj[i].size()!=1){
        assert(adj[i].size()==3);

        for (int k=0;k<3;k++){
            vector<int> tmp = {i};
            for (int l=0;l<3;l++) if (k!=l) tmp.push_back(adj[i][l]);
            if (Query(tmp)==1){
                adj[i].erase(adj[i].begin()+k);
                break;
            }
        }
    }

    for (int i=1;i<=n*2;i++) if (!chk[i]){
        for (int k=0;k<(int)adj[i].size();k++){
            int v = adj[i][k];
            if (find(adj[v].begin(), adj[v].end(), i)==adj[v].end()) continue;
            Answer(i, v);
            chk[i] = 1, chk[v] = 1;
        }
        assert(chk[i]);
    }
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 336 KB Output is correct
3 Correct 27 ms 336 KB Output is correct
4 Correct 28 ms 484 KB Output is correct
5 Correct 28 ms 480 KB Output is correct
6 Correct 32 ms 424 KB Output is correct
7 Correct 27 ms 428 KB Output is correct
8 Correct 27 ms 336 KB Output is correct
9 Correct 28 ms 432 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 336 KB Output is correct
3 Correct 0 ms 336 KB Output is correct
4 Runtime error 1 ms 464 KB Execution killed with signal 6
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 336 KB Output is correct
3 Correct 0 ms 336 KB Output is correct
4 Runtime error 1 ms 464 KB Execution killed with signal 6
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 336 KB Output is correct
3 Correct 47 ms 424 KB Output is correct
4 Correct 50 ms 428 KB Output is correct
5 Correct 53 ms 432 KB Output is correct
6 Correct 50 ms 436 KB Output is correct
7 Correct 48 ms 364 KB Output is correct
8 Correct 49 ms 432 KB Output is correct
9 Correct 49 ms 424 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 336 KB Output is correct
2 Correct 0 ms 336 KB Output is correct
3 Correct 27 ms 336 KB Output is correct
4 Correct 28 ms 484 KB Output is correct
5 Correct 28 ms 480 KB Output is correct
6 Correct 32 ms 424 KB Output is correct
7 Correct 27 ms 428 KB Output is correct
8 Correct 27 ms 336 KB Output is correct
9 Correct 28 ms 432 KB Output is correct
10 Correct 0 ms 336 KB Output is correct
11 Correct 0 ms 336 KB Output is correct
12 Correct 0 ms 336 KB Output is correct
13 Runtime error 1 ms 464 KB Execution killed with signal 6
14 Halted 0 ms 0 KB -