#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];
}
vector<int> upd(n), act(n, 1), now = r;
if(k * 2 > n){
for(int tur = 0; tur < n; tur++){
int mxval = 0;
vector<int> mxcan;
for(int i = 0; i < n; i++){
if(!act[i]) continue;
if(now[i] > mxval){
mxval = now[i];
mxcan.clear();
mxcan.pb(i);
}
else if(now[i] == mxval){
mxcan.pb(i);
}
}
int ans = mxcan[0];
if(mxcan.size() == 2){
pair<int, int> r0 = {mxcan[0], (mxcan[0] + k - 1)%n};
if(r0.first < r0.second){
if(mxcan[1] >= r0.first && mxcan[1] <= r0.second){
ans = mxcan[0];
}
else{
ans = mxcan[1];
}
}
else{
if(mxcan[1] >= r0.first || mxcan[1] <= r0.second){
ans = mxcan[0];
}
else{
ans = mxcan[1];
}
}
}
//cout<<tur<<" icin : "<<mxcan.size()<<endl;
val[ans] = n - tur;
act[ans] = 0;
//cout<<tur<<" icin :"<<ans<<" val = "<<val[ans]<<endl;
for(int i = 0; i < k-1; i++){
now[(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... |