답안 #829822

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
829822 2023-08-18T15:15:12 Z GusterGoose27 코알라 (APIO17_koala) C++17
19 / 100
12 ms 464 KB
#include "koala.h"

#include <bits/stdc++.h>

using namespace std;

const int MAXN = 105;
bool pres[MAXN];
int n, w;

vector<int> query(vector<int> &inp) {
    int *a = new int[n];
    int *b = new int[n];
    for (int i = 0; i < n; i++) a[i] = inp[i];
    playRound(a, b);
    vector<int> out;
    for (int i = 0; i < n; i++) {
        if (b[i] > inp[i]) out.push_back(i);
    }
    delete[] a;
    delete[] b;
    return out;
}

vector<int> complement(vector<int> inp) {
    fill(pres, pres+n, 0);
    for (int v: inp) pres[v] = 1;
    vector<int> out;
    for (int i = 0; i < n; i++)
        if (!pres[i]) out.push_back(i);
    return out;
}

vector<int> inter(vector<int> a, vector<int> &b) {
    fill(pres, pres+n, 0);
    for (int v: a) pres[v] = 1;
    vector<int> out;
    for (int v: b)
        if (pres[v]) out.push_back(v);
    return out;
}

int minValue(int N, int W) {
    n = N; w = W;
    vector<int> vals(n, 0);
    vals[0] = 1;
    return complement(query(vals))[0];
}

int maxValue(int N, int W) {
    n = N; w = W;
    vector<int> cur(n, 0);
    iota(cur.begin(), cur.end(), 0);
    while (cur.size() > 1) {
        int put = n/cur.size();
        vector<int> qry(n, 0);
        for (int v: cur) qry[v] = put;
        cur = inter(query(qry), cur);
    }
    return cur[0];
}

int greaterValue(int N, int W) {
    n = N; w = W;
    vector<int> put({1, 2, 5, 10});
    int mn = -1, mx = 4;
    vector<int> two({0, 1});
    while (mx > mn+1) {
        int cur = (mn+mx)/2;
        vector<int> qry(n, 0);
        qry[0] = qry[1] = put[cur];
        vector<int> vals = inter(query(qry), two);
        if (vals.size() == 2) mn = cur+1;
        else if (vals.empty()) mx = cur-1;
        else {
            return vals[0];
        }
    }
    assert(false);
    return 0;
}

void allValues(int N, int W, int *P) {
    n = N; w = W;
    if (W == 2*N) {
        // TODO: Implement Subtask 4 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    } else {
        // TODO: Implement Subtask 5 solution here.
        // You may leave this block unmodified if you are not attempting this
        // subtask.
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 208 KB Output is correct
2 Correct 4 ms 208 KB Output is correct
3 Correct 3 ms 208 KB Output is correct
4 Correct 3 ms 208 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 316 KB Output is correct
2 Correct 10 ms 208 KB Output is correct
3 Correct 10 ms 316 KB Output is correct
4 Correct 10 ms 208 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 464 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -