Submission #1075441

#TimeUsernameProblemLanguageResultExecution timeMemory
1075441HappyCapybaraKoala Game (APIO17_koala)C++17
76 / 100
39 ms596 KiB
#include "koala.h" #include<bits/stdc++.h> using namespace std; int minValue(int N, int W) { int B[N], R[N]; for (int i=0; i<N; i++) B[i] = 0; B[0] = 1; playRound(B, R); for (int i=0; i<N; i++){ if (B[i] >= R[i]) return i; } } int maxValue(int N, int W) { int B[N], R[N]; for (int i=0; i<N; i++) B[i] = 1; playRound(B, R); vector<int> v; for (int i=0; i<N; i++){ if (R[i] > 1) v.push_back(i); } //cout << v.size() << "\n"; for (int i=0; i<N; i++) B[i] = 0; for (int x : v) B[x] = 2; playRound(B, R); vector<int> w; for (int x : v){ if (R[x] > 2) w.push_back(x); } //cout << w.size() << "\n"; for (int i=0; i<N; i++) B[i] = 0; for (int x : w) B[x] = 4; playRound(B, R); vector<int> u; for (int x : w){ if (R[x] > 4) u.push_back(x); } //cout << u.size() << "\n"; for (int i=0; i<N; i++) B[i] = 0; for (int x : u) B[x] = 11; playRound(B, R); for (int x : u){ if (R[x] > 11) return x; } } int greaterValue(int N, int W) { int B[N], R[N]; for (int i=0; i<N; i++) B[i] = 0; int l = 0, r = 13; while (l != r){ int m = (l+r)/2; B[0] = m; B[1] = m; playRound(B, R); if (R[0] > B[0] && R[1] > B[1]) l = m; if (R[0] <= B[0] && R[1] <= B[1]) r = m; if (R[0] > B[0] && R[1] <= B[1]) return 0; if (R[0] <= B[0] && R[1] > B[1]) return 1; } } int comp(int a, int b){ int N = 100; int B[N], R[N]; for (int i=0; i<N; i++) B[i] = 0; int l = 0, r = 13; while (l != r){ int m = (l+r)/2; B[a] = m; B[b] = m; playRound(B, R); if (R[a] > B[a] && R[b] > B[b]) l = m; if (R[a] <= B[a] && R[b] <= B[b]) r = m; if (R[a] > B[a] && R[b] <= B[b]) return 0; if (R[a] <= B[a] && R[b] > B[b]) return 1; } } vector<int> sort2(vector<int> v){ if (v.size() == 1) return v; if (v.size() == 2){ if (comp(v[0], v[1])) return v; else return {v[1], v[0]}; } int l = v.size()/2; int r = v.size()-l; vector<int> a(l); vector<int> b(r); for (int i=0; i<l; i++) a[i] = v[i]; for (int i=0; i<r; i++) b[i] = v[i+l]; a = sort2(a); b = sort2(b); vector<int> w; int c = 0, d = 0; while (c+d < l+r){ if (c == l){ w.push_back(b[d]); d++; continue; } if (d == r){ w.push_back(a[c]); c++; continue; } if (comp(a[c], b[d])){ w.push_back(a[c]); c++; } else { w.push_back(b[d]); d++; } } return w; } int comp2(int a, int b){ int N = 100; int B[N], R[N]; for (int i=0; i<N; i++) B[i] = 0; B[a] = 100; B[b] = 100; playRound(B, R); if (R[b] > 100) return 1; else return 0; } vector<int> sort3(vector<int> v){ if (v.size() == 1) return v; if (v.size() == 2){ if (comp2(v[0], v[1])) return v; else return {v[1], v[0]}; } int l = v.size()/2; int r = v.size()-l; vector<int> a(l); vector<int> b(r); for (int i=0; i<l; i++) a[i] = v[i]; for (int i=0; i<r; i++) b[i] = v[i+l]; a = sort3(a); b = sort3(b); vector<int> w; int c = 0, d = 0; while (c+d < l+r){ if (c == l){ w.push_back(b[d]); d++; continue; } if (d == r){ w.push_back(a[c]); c++; continue; } if (comp2(a[c], b[d])){ w.push_back(a[c]); c++; } else { w.push_back(b[d]); d++; } } return w; } void allValues(int N, int W, int *P) { if (W == 2*N){ vector<int> v(100); for (int i=0; i<100; i++) v[i] = i; vector<int> w = sort3(v); for (int i=0; i<N; i++) P[w[i]] = i+1; return; } else { vector<int> v(100); for (int i=0; i<100; i++) v[i] = i; vector<int> w = sort2(v); for (int i=0; i<N; i++) P[w[i]] = i+1; return; } }

Compilation message (stderr)

koala.cpp: In function 'int minValue(int, int)':
koala.cpp:13:1: warning: control reaches end of non-void function [-Wreturn-type]
   13 | }
      | ^
koala.cpp: In function 'int maxValue(int, int)':
koala.cpp:19:17: warning: control reaches end of non-void function [-Wreturn-type]
   19 |     vector<int> v;
      |                 ^
koala.cpp: In function 'int greaterValue(int, int)':
koala.cpp:62:1: warning: control reaches end of non-void function [-Wreturn-type]
   62 | }
      | ^
koala.cpp: In function 'int comp(int, int)':
koala.cpp:79:1: warning: control reaches end of non-void function [-Wreturn-type]
   79 | }
      | ^
#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...