Submission #652492

#TimeUsernameProblemLanguageResultExecution timeMemory
652492blueKoala Game (APIO17_koala)C++17
30 / 100
93 ms328 KiB
#include "koala.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; using vvi = vector<vi>; #define sz(x) int(x.size()) int N; vi playRound(vi BV) { int B[N]; int R[N]; for(int i = 0; i < N; i++) { B[i] = BV[i]; } playRound(B, R); vi RV(N); for(int i = 0; i < N; i++) RV[i] = R[i]; return RV; } int minValue(int N_, int W) { N = N_; vi B(N, 0); B[0] = 1; vi R = playRound(B); for(int i = 0; i < N; i++) if(R[i] == 0) return i; return 0; } int maxValue(int N_, int W) { N = N_; vi cand; for(int i = 0; i < N; i++) cand.push_back(i); while(sz(cand) > 1) { int toput = W / sz(cand); vi B(N, 0); for(int i : cand) B[i] = toput; vi R = playRound(B); vi newcand; for(int i = 0; i < N; i++) { if(B[i] > 0 && R[i] > B[i]) newcand.push_back(i); } cand = newcand; } return cand[0]; } int greaterValue(int N_, int W) { N = N_; int lo = 1, hi = W/2; while(lo != hi) { int mid = (lo+hi)/2; vi B(N, 0); B[0] = B[1] = mid; vi R = playRound(B); vi taken(N, 0); for(int i = 0; i < N; i++) if(R[i] > B[i]) taken[i] = 1; if(taken[0] && !taken[1]) return 0; if(taken[1] && !taken[0]) return 1; if(taken[1] && taken[0]) lo = mid+1; else hi = mid-1; } return -1; } void allValues(int N_, int W, int *P_) { N = N_; vi P(N); for(int i = 0; i < N; i++) P[i] = P_[i]; 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. } }
#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...