Submission #977021

#TimeUsernameProblemLanguageResultExecution timeMemory
977021hmm789Koala Game (APIO17_koala)C++14
37 / 100
56 ms728 KiB
#include "koala.h" #include <bits/stdc++.h> using namespace std; int minValue(int N, int W) { int a[N], b[N]; a[0] = 1; for(int i = 1; i < N; i++) a[i] = 0; playRound(a, b); for(int i = 0; i < N; i++) if(!b[i]) return i; return 0; } int maxValue(int N, int W) { int a[N], b[N]; for(int i = 0; i < N; i++) a[i] = 1; playRound(a, b); set<int> s; for(int i = 0; i < N; i++) if(b[i]) s.insert(i); memset(a, 0, sizeof(a)); for(int i : s) a[i] = 2; playRound(a, b); for(int i = 0; i < N; i++) if(s.find(i) != s.end() && !b[i]) s.erase(i); memset(a, 0, sizeof(a)); for(int i : s) a[i] = 4; playRound(a, b); for(int i = 0; i < N; i++) if(s.find(i) != s.end() && !b[i]) s.erase(i); memset(a, 0, sizeof(a)); for(int i : s) a[i] = 11; playRound(a, b); for(int i = 0; i < N; i++) if(s.find(i) != s.end() && !b[i]) s.erase(i); return *s.begin(); } int greaterValue(int N, int W) { int a[N], b[N]; memset(a, 0, sizeof(a)); int l = 1, r = 9, m; while(l <= r) { m = (l+r)/2; a[0] = a[1] = m; playRound(a, b); if(b[0] && b[1]) l = m+1; else if(!b[0] && !b[1]) r = m-1; else if(b[0] && !b[1]) return 0; else return 1; } return 0; } void allValues(int N, int W, int *P) { int a[N], b[N]; memset(a, 0, sizeof(a)); if (W == 2*N) { int c[N]; for(int i = 0; i < N; i++) c[i] = i; sort(c, c+N, [&](int x, int y) { if(x == y) return false; a[x] = a[y] = 100; playRound(a, b); a[x] = a[y] = 0; return b[y] > 100; }); for(int i = 0; i < N; i++) P[c[i]] = i+1; } 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...