Submission #303421

#TimeUsernameProblemLanguageResultExecution timeMemory
303421myungwooComparing Plants (IOI20_plants)C++17
14 / 100
4073 ms5752 KiB
#include <bits/stdc++.h> #include "plants.h" using namespace std; #define MAXN 200005 int N, K, R[MAXN]; int A[MAXN]; void init(int K, vector<int> r) { ::K = K; assert(K+K > N && N <= 5000); N = r.size(); for (int i=1;i<=N;i++) R[i] = r[i-1]; for (int h=N;h;h--){ auto find_highest = [&](){ int cnt = 0; for (int i=1;i<=N+N;i++){ int x = i > N ? i-N : i; if (R[x] == 0){ if (cnt >= K-1) return x; cnt = 0; } else cnt++; } return 0; }; int x = find_highest(); assert(x != 0); A[x] = h; R[x] = -1; for (int i=1;i<K;i++){ int t = x-i < 1 ? x-i+N : x-i; if (R[t] != -1) R[t]--; } } } int compare_plants(int x, int y) { x++; y++; if (A[x] > A[y]) return 1; if (A[x] < A[y]) return -1; return 0; // can't reach here }
#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...