Submission #452061

#TimeUsernameProblemLanguageResultExecution timeMemory
452061rainboyComparing Plants (IOI20_plants)C++17
5 / 100
103 ms5056 KiB
#include "plants.h" using namespace std; typedef vector<int> vi; const int N = 200000, INF = 0x3f3f3f3f; int pp[N], hh[N], n, k; void init(int k_, vi rr) { int h, i; n = rr.size(), k = k_; if (k == 2) { for (i = 0; i < n; i++) pp[i] = rr[i]; for (i = 1; i < n; i++) pp[i] += pp[i - 1]; } else { for (h = n - 1; h >= 0; h--) { int i_ = -1; for (i = 0; i < n; i++) if (rr[i] == 0) { if (i_ != -1 && i - i_ >= k_) break; i_ = i; } i = i_; hh[i] = h; rr[i] = INF; for (i_ = 0; i_ < k; i_++) rr[(i + i_) % n]--; } } } int compare_plants(int x, int y) { if (k == 2) { int c = pp[y - 1] - (x == 0 ? 0 : pp[x - 1]); if (c == y - x) return -1; else if (c == 0) return 1; c = pp[n - 1] - c; if (c == n - (y - x)) return 1; else if (c == 0) return -1; return 0; } else return hh[x] < hh[y] ? -1 : 1; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...