Submission #1179816

#TimeUsernameProblemLanguageResultExecution timeMemory
1179816NValchanovKoala Game (APIO17_koala)C++20
37 / 100
28 ms460 KiB
#include "koala.h" #include <bits/stdc++.h> using namespace std; int minValue(int n, int w) { int b[n]; int r[n]; for(int i = 1; i < n; i++) { b[i] = 0; } b[0] = 1; playRound(b, r); if(r[0] <= 1) return 0; for(int i = 1; i < n; i++) { if(r[i] == 0) return i; } return 0; } int maxValue(int n, int w) { int b[n]; int r[n]; vector < int > maxset; for(int i = 0; i < n; i++) { maxset.push_back(i); } while(maxset.size() > 1) { int sz = maxset.size(); int by = w / sz; for(int i = 0; i < n; i++) { b[i] = 0; } for(int idx : maxset) { b[idx] = by; } playRound(b, r); maxset.clear(); for(int i = 0; i < n; i++) { if(r[i] > by) maxset.push_back(i); } } return maxset[0]; return 0; } bool cmp(int idx1, int idx2, int n, int w, int *b, int *r) { int left = 0; int right = 15; int mid; while(right - left > 1) { mid = left + (right - left) / 2; b[idx1] = b[idx2] = mid; playRound(b, r); if(r[idx1] <= mid && r[idx2] <= mid) right = mid; else if(r[idx1] > mid && r[idx2] > mid) left = mid; else return r[idx1] < r[idx2]; } b[idx1] = b[idx2] = left; playRound(b, r); return r[idx1] < r[idx2]; } int greaterValue(int n, int w) { int b[n]; int r[n]; for(int i = 0; i < n; i++) { b[i] = 0; } return cmp(0, 1, n, w, b, r); } void allValues(int n, int w, int *p) { }
#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...