Submission #659905

#TimeUsernameProblemLanguageResultExecution timeMemory
659905evenvalueComparing Plants (IOI20_plants)C++17
14 / 100
4051 ms9552 KiB
#include "plants.h" #include <bits/stdc++.h> using namespace std; template<typename T> using min_heap = priority_queue<T, vector<T>, greater<T>>; template<typename T> using max_heap = priority_queue<T, vector<T>, less<T>>; using int64 = long long; using ld = long double; constexpr int kInf = 1e9 + 10; constexpr int64 kInf64 = 1e15 + 10; constexpr int kMod = 1e9 + 7; vector<int> h; int n = -1; void init(int k, vector<int> r) { n = r.size(); r.insert(r.end(), r.begin(), r.end()); h.resize(n); auto dec = [&](const int i) { r[i]--; (i >= n ? r[i - n] : r[i + n])--; }; vector<bool> taken(2 * n); for (int i = n, ht = n; ht > 0; i++) { if (i == 2 * n) i = n; if (taken[i] or r[i] != 0) continue; bool good = true; for (int j = i - k + 1; j < i; j++) { good &= (r[j] != 0) or taken[j]; } if (not good) continue; for (int j = i - k + 1; j < i; j++) { dec(j); } taken[i] = taken[i - n] = true; h[i - n] = ht; ht--; } } int compare_plants(int x, int y) { return (h[x] > h[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...