#include "bits/stdc++.h"
#include "plants.h"
#define pb push_back
using namespace std;
vector<int> mnsg;
void init(int k, vector<int> r) {
    int n = r.size();
    for(int i = 0; i < n; i++){
        r[i] = (k - 1) - r[i];
    }
    vector<int> mns(n, n-1);
    for(int cur = 0; cur < n; cur++){
        vector<int> now = r, candnow(n), act(n, 1);
        set<int> cand;
        bool cand_cur = 0;
        for(int i = 0; i < n; i++){
            if(!now[i]){
                cand.insert(i);
                candnow[i] = true;
            }
        }
        // candidate olana kadar sagımda alabilecegim ilk elemanı al upd at onu deaktive et
        // eger ben candidate isem solda alabilecegim ilk elemanı al upd at onu deaktive et öyle ki solum boşalana ve kendimi alana kadar
        int cnt = 0;
        while(true){
            int opbas = 0;
            if(candnow[cur] == false){
                if(!cand.size()){
                    cout<<cur<<" ve "<<cnt<<" bakarken patladık "<<endl;
                    abort();
                }
                auto nxt = cand.lower_bound(cur);
                if(nxt == cand.end()){
                    nxt = cand.begin();
                }
                opbas = *nxt;
            }
            else{
                int lst = cur;
                for(int j = cur-1; j > cur-n; j--){
                    if(candnow[(j + n)%n] && lst - j < k){
                        lst = j;
                    }
                }
                opbas = (lst + n)%n;
            }
            if(opbas == cur) break;
            cnt++;
            cand.erase(cand.find(opbas));
            candnow[opbas] = 0;
            act[opbas] = 0;
            for(int i = opbas-1; i > opbas-k; i--){
                if(!act[(i+n)%n]) continue;
                if(candnow[(i+n)%n]) continue;
                now[(i + n)%n]--;
                if(!now[(i + n)%n]){
                    cand.insert((i + n)%n);
                    candnow[(i + n)%n] = 1;
                }
            }
        }
        mns[cur] = cnt;
    }
    mnsg = mns;
    return;
}
int compare_plants(int x, int y) {
    if(mnsg[x] > mnsg[y]) return 1;
    else if(mnsg[x] < mnsg[y]) return -1;
    else return 0;
}
| # | 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... |