Submission #303223

#TimeUsernameProblemLanguageResultExecution timeMemory
303223qiangbaoComparing Plants (IOI20_plants)C++14
14 / 100
4086 ms5112 KiB
#include <iostream> #include <vector> #include <set> #include "plants.h" #define pb push_back using namespace std; int n; set<int> zero; set<int> cur; set<int>:: iterator it, it2; int ans[200001]; void init(int k, vector<int> r) { int i, j; n=r.size(); for(i=0;i<n;i++) r[i]=k-1-r[i]; for(i=0;i<n;i++) if(r[i]==0) zero.insert(i); for(i=1;i<=n;i++){ cur.clear(); it=zero.begin(); while(it!=zero.end()){ cur.insert(*it), cur.insert(*it+n); it++; } it=cur.begin(); while(it!=cur.end()){ it2=it, it2++; if(it2==cur.end()) break; if(*it2-*it<k){ cur.erase(*it2); cur.erase(*it2+n); } else it++; } it=cur.begin(); while(it!=cur.end()){ int f=*it; if(f<n){ it++; continue; } f-=n; ans[f]=i; zero.erase(f); for(j=0;j<k;j++){ int f2=(f-j); if(f2<0) f2+=n; r[f2]--; if(r[f2]==0) zero.insert(f2); } it++; } } } int compare_plants(int x, int y) { if(ans[x]==ans[y]) return 0; else if(ans[x]>ans[y]) return 1; return -1; } //int main() //{ // int nn; // vector<int> in, in2; // int i, j; // // cin >> nn; // for(i=0;i<nn;i++){ // int x; // cin >> x; // in.pb(x), in2.pb(0); // } // // for(i=0;i<nn;i++) // for(j=1;j<4;j++){ // int f=(i+j)%nn; // if(in[i]<in[f]) // in2[i]++; // } // // init(4, in2); // for(i=0;i<n;i++) // cout << ans[i] << " "; // cout << endl; // // return 0; //} //7 // 4 3 5 7 6 1 2
#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...