Submission #721986

#TimeUsernameProblemLanguageResultExecution timeMemory
721986baojiaopisuKoala Game (APIO17_koala)C++14
67 / 100
61 ms340 KiB
#include "koala.h" #include<bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; using ull = unsigned long long; using pii = pair<int, int>; using pll = pair<ll, ll>; using pld = pair<ld, ld>; #define fi first #define se second #define left BAO #define right ANH #define pb push_back #define pf push_front #define mp make_pair #define ins insert #define btpc __builtin_popcount #define btclz __builtin_clz #define sz(x) (int)(x.size()); #define all(x) x.begin(), x.end() #define debug(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] " mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int d4x[4] = {1, 0, -1, 0}; int d4y[4] = {0, 1, 0, -1}; int d8x[8] = {0, 1, 1, 1, 0, -1, -1, -1}; int d8y[8] = {1, 1, 0, -1, -1, -1, 0, 1}; template<class X, class Y> bool minimize(X &x, const Y &y) { if (x > y) { x = y; return true; } return false; } template<class X, class Y> bool maximize(X &x, const Y &y) { if (x < y) { x = y; return true; } return false; } const int MOD = 1e9 + 7; //998244353 template<class X, class Y> void add(X &x, const Y &y) { x = (x + y); if(x >= MOD) x -= MOD; } template<class X, class Y> void sub(X &x, const Y &y) { x = (x - y); if(x < 0) x += MOD; } /* Author : Le Ngoc Bao Anh, 12A5, LQD High School for Gifted Student*/ const ll INF = 1e9; const int N = 1e5 + 10; int minValue(int N, int W) { int n = N, w = W; int b[100], r[100]; for(int i = 0; i < n; i++) b[i] = 0; b[0] = 1; int ans = 0; playRound(b, r); for(int i = 1; i < n; i++) { if(r[i] == 0) ans = i; } return ans; } int maxValue(int N, int W) { int n = N, w = W; int b[100], r[100]; for(int i = 0; i < n; i++) b[i] = 1; playRound(b, r); vector<int> nxt; for(int i = 0; i < n; i++) if(r[i] == 2) nxt.pb(i); for(int i = 0; i < n; i++) b[i] = 0; for(auto x : nxt) b[x] = 2; playRound(b, r); nxt.clear(); for(int i = 0; i < n; i++) if(r[i] == 3) nxt.pb(i); for(int i = 0; i < n; i++) b[i] = 0; for(auto x : nxt) b[x] = 4; playRound(b, r); nxt.clear(); for(int i = 0; i < n; i++) if(r[i] == 5) nxt.pb(i); for(int i = 0; i < n; i++) b[i] = 0; for(auto x : nxt) b[x] = 11; playRound(b, r); int ans = 0; for(int i = 0; i < n; i++) if(r[i] == 12) ans = i; return ans; } int greaterValue(int N, int W) { int lo = 1, hi = 9; int n = N, w = W; int b[100], r[100]; while(lo <= hi) { int mid = (lo + hi) >> 1; for(int i = 0; i < n; i++) b[i] = 0; b[0] = b[1] = mid; playRound(b, r); if(r[0] != r[1]) { return (r[0] > r[1] ? 0 : 1); } if(r[0] > b[0]) { lo = mid + 1; } else hi = mid - 1; } return 0; } int n, w; bool compare(int x, int y) { int lo = 1, hi = 14; int b[100], r[100]; while(lo <= hi) { int mid = (lo + hi) >> 1; for(int i = 0; i < n; i++) b[i] = 0; b[x] = b[y] = mid; playRound(b, r); if(r[x] != r[y]) { return (r[x] > r[y] ? true : false); } if(r[x] > b[x]) { lo = mid + 1; } else hi = mid - 1; } return true; } void allValues(int N, int W, int *P) { if (W == 2*N) { } else { n = N, w = W; vector<int> ans; ans.pb(0); for(int i = 1; i < n; i++) { int l = 0, r = ans.size() - 1, pos = -1; while(l <= r) { int mid = (l + r) >> 1; if(compare(i, ans[mid])) { pos = mid; l = mid + 1; } else r = mid - 1; } ans.pb(0); for(int i = ans.size() - 1; i > pos + 1; i--) ans[i] = ans[i - 1]; ans[pos + 1] = i; } for(int i = 0; i < n; i++) { P[ans[i]] = i + 1; } } }

Compilation message (stderr)

koala.cpp: In function 'int minValue(int, int)':
koala.cpp:74:16: warning: unused variable 'w' [-Wunused-variable]
   74 |     int n = N, w = W;
      |                ^
koala.cpp: In function 'int maxValue(int, int)':
koala.cpp:87:16: warning: unused variable 'w' [-Wunused-variable]
   87 |     int n = N, w = W;
      |                ^
koala.cpp: In function 'int greaterValue(int, int)':
koala.cpp:113:16: warning: unused variable 'w' [-Wunused-variable]
  113 |     int n = N, w = W;
      |                ^
#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...