Submission #314636

#TimeUsernameProblemLanguageResultExecution timeMemory
314636kostia244Comparing Plants (IOI20_plants)C++17
14 / 100
4089 ms5064 KiB
#include "plants.h" #include<bits/stdc++.h> using ll = long long; using namespace std; const int maxn = 1<<17; int n, k, ord[maxn], oh[maxn]; int in(int l, int r, int x) { if(l >= n) l%=n; if(r >= n) r%=n; if(l > r) { return in(l, n-1, x) || in(0, r, x); } return l <= x && x <= r; } void ah(int i, int x) { for(int j = 1; j < k; j++) oh[(i+j)%n]+=x; } void init(int K, std::vector<int> r) { k = K; n = r.size(); for(int i = 0; i < n; i++) if(r[i] == 0) ah(i, 1); for(int L = n; L; L--) { int f = 1; for(int i = 0; f && i < n; i++) if(!oh[i] && r[i] == 0 && !ord[i]) { ord[i] = L; ah(i, -1); for(int j = 1; j < k; j++) { int pos = (n-j+i)%n; if(--r[pos] == 0) ah(pos, 1); } f = 0; } } return; } int compare_plants(int x, int y) { return (ord[x] > ord[y]) - (ord[x] < ord[y]); }
#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...