답안 #828862

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
828862 2023-08-17T17:53:49 Z roseanne_pcy 코알라 (APIO17_koala) C++14
33 / 100
40 ms 348 KB
#include "koala.h"

#include <bits/stdc++.h>

using namespace std;

typedef pair<int, int> ii;
typedef vector<int> vi;
typedef long long ll;

#define f first
#define s second
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define sz(x) (int)x.size()
#define all(x) begin(x), end(x)

const int MAXN = 105;

int play[MAXN];
int res[MAXN];

void reset(int n) {
    for (int i = 0; i< n; i++) {
        play[i] = res[i] = 0;
    }
}

int minValue(int N, int W) {
    int n = N;
    play[0] = 1;
    playRound(play, res);
    for (int i = 0; i < n; i++) {
        if (res[i] == 0) {
            return i;
        }
    }
    reset(N);
    play[1] = 1;
    playRound(play, res);
    for (int i = 0; i < n; i++) {
        if (res[i] == 0) {
            return i;
        }
    }
    return -1;
}

int maxValue(int N, int W) {
    int n = N;
    for (int i = 0; i < n; i++) {
        play[i] = 1;
    }
    playRound(play, res);
    set <int> pots;
    for (int i = 0; i< n; i++) {
        if (res[i] > 0) {
            pots.insert(i);
        }
    }

    int times = 3;
    while(times--) {  
        reset(N);
        for (int x : pots) {
            play[x] = W/(pots.size());
        }

        playRound(play, res);

        set <int> newpots;
        for (int i = 0; i< n; i++) {
            if (res[i] > 0 && (pots.find(i) != pots.end())) {
                newpots.insert(i);
            }
        }
        pots = newpots;
    }
    return *(pots.begin());
}

int greaterValue(int N, int W) {
    int n = N;
    int lo = 1, hi = W/6;
    while (lo < hi) {
        int mid = (lo+hi)/2;
        reset(n);
        play[0] = play[1] = mid;
        for (int i = 2; i< n; i++) {
            play[i] = 0;
        }
        playRound(play, res);
        if (res[0] != res[1]) {
            if (res[0] > res[1]) {
                return 0;
            } else {
                return 1;
            }
        } else {
            if (res[0] == 0) {
                hi = mid-1;
            } else {
                lo = mid+1;
            }
        }
    }
}

void allValues(int N, int W, int *P) {
    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.
    }
}

Compilation message

koala.cpp: In function 'int greaterValue(int, int)':
koala.cpp:108:1: warning: control reaches end of non-void function [-Wreturn-type]
  108 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 208 KB Output is correct
2 Correct 3 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 11 ms 208 KB Output is correct
2 Correct 11 ms 324 KB Output is correct
3 Correct 11 ms 208 KB Output is correct
4 Correct 10 ms 208 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 36 ms 344 KB Output is correct
2 Partially correct 38 ms 328 KB Output is partially correct
3 Correct 33 ms 336 KB Output is correct
4 Correct 34 ms 316 KB Output is correct
5 Partially correct 39 ms 344 KB Output is partially correct
6 Correct 34 ms 324 KB Output is correct
7 Partially correct 33 ms 336 KB Output is partially correct
8 Correct 36 ms 316 KB Output is correct
9 Correct 35 ms 348 KB Output is correct
10 Correct 40 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 208 KB Output isn't correct
2 Halted 0 ms 0 KB -