Submission #1238358

#TimeUsernameProblemLanguageResultExecution timeMemory
1238358SalihSahinComparing Plants (IOI20_plants)C++20
14 / 100
4094 ms7236 KiB
#include "bits/stdc++.h" #include "plants.h" #define pb push_back using namespace std; vector<int> val; void init(int k, vector<int> r) { int n = r.size(); val.resize(n); for(int i = 0; i < n; i++){ r[i] = (k - 1) - r[i]; } if(k * 2 > n){ vector<int> upd(n), act(n, 1), now = r; set<int> mncan; for(int i = 0; i < n; i++){ if(!act[i]) continue; if(now[i] == 0){ mncan.insert(i); } } for(int tur = 0; tur < n; tur++){ int ans = *mncan.begin(); auto lst = *mncan.begin(); for(auto itr: mncan){ if((itr - lst + n)%n >= (n+1)/2){ ans = itr; } lst = itr; } val[ans] = tur; act[ans] = 0; mncan.erase(mncan.find(ans)); for(int i = 0; i < k-1; i++){ if(!act[(ans - i - 1 + n)%n]) continue; now[(ans - i - 1 + n)%n]--; if(now[(ans - i - 1 + n)%n] == 0){ mncan.insert((ans - i - 1 + n)%n); } } } } return; } int compare_plants(int x, int y) { if(val[x] > val[y]) return 1; else return -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...