#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |