Submission #653823

#TimeUsernameProblemLanguageResultExecution timeMemory
653823blueKoala Game (APIO17_koala)C++17
37 / 100
49 ms340 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]; } bool cmp(int a, int b, int W) { int lo = 1; int hi = 14; while(true) { int mid = (lo+hi)/2; vi B(N, 0); B[a] = B[b] = 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[a] && !taken[b]) return 0; if(taken[b] && !taken[a]) return 1; if(taken[a]) lo = mid+1; else hi = mid-1; } } int greaterValue(int N_, int W) { N = N_; // int lo = 1, hi = 30; // 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; if(cmp(0, 1, W)) return 1; else return 0; } 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...