# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
175812 | 2020-01-07T11:21:14 Z | Saboon | Koala Game (APIO17_koala) | C++14 | 0 ms | 0 KB |
#include "koala.h" #include <bits/stdc++.h> using namespace std; int B[100], R[100]; bool mark[100]; int minValue(int N, int W){ for (int i = 0; i < N; i++) B[i] = 0; B[0] = 1; playRound(B, R); for (int i = 0; i < N; i++) if (R[i] == 0) return i; return 0; } int maxValue(int N, int W) { int k = N; for (int i = 0; i < N; i++) mark[i] = 0; while (k > 1){ int cost = min(13, W / k); for (int i = 0; i < N; i++){ if (!mark[i]) B[i] = cost; else B[i] = 0; } playRound(B, R); for (int i = 0; i < N; i++) if (!mark[i] and R[i] <= B[i]) mark[i] = 1; k = 0; for (int i = 0; i < N; i++) if (mark[i] == 0) k ++; } for (int i = 0; i < N; i++) if (!mark[i]) return i; return 0; } int greaterValue(int N, int W, int v = 0, int u = 0){ int lo = 0, hi = 14; while (hi - lo > 1){ int mid = (lo + hi) >> 1; for (int i = 0; i < N; i++) B[i] = 0; B[v] = B[u] = mid; playRound(B, R); bool fi = (R[v] > B[v]); bool se = (R[u] > B[u]); if (fi == se){ if (fi == 1) lo = mid; else hi = mid; } else return se; } return 0; } void allValues(int N, int W, int *P) { if (W == 2*N) { for (int i = 0; i < N; i++) P[i] = i; sort(P, P + N, cmp); } else { // TODO: Implement Subtask 5 solution here. // You may leave this block unmodified if you are not attempting this // subtask. } }