제출 #1238324

#제출 시각아이디문제언어결과실행 시간메모리
1238324SalihSahinComparing Plants (IOI20_plants)C++20
0 / 100
4 ms328 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]; } 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 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...