Submission #1238531

#TimeUsernameProblemLanguageResultExecution timeMemory
1238531SalihSahinComparing Plants (IOI20_plants)C++20
0 / 100
4094 ms11332 KiB
#include "bits/stdc++.h" #include "plants.h" #define pb push_back using namespace std; vector<int> val, mnsg; 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> 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; /* cout<<cur<<" "<<cnt<<" ikilisi icin: "; for(auto itr: cand){ cout<<itr<<" "; } cout<<endl; */ 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--){ int indj = (j + n)%n; if(lst - j >= k){ break; } if(candnow[indj]){ lst = j; } } opbas = lst; } if(opbas < 0) opbas += n; if(opbas == cur) break; //cout<<cur<<" "<<cnt<<" icin op: "<<opbas<<endl; 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; now[(i + n)%n]--; if(!now[(i + n)%n]){ cand.insert((i + n)%n); candnow[(i + n)%n] = 1; } } /* cout<<cur<<" "<<cnt<<" ikilisi icin: "; for(auto itr: cand){ cout<<itr<<" "; } cout<<endl; */ } mns[cur] = cnt; //cout<<cur<<" icin min value = "<<mns[cur]<<endl; } 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 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...