Submission #303337

#TimeUsernameProblemLanguageResultExecution timeMemory
303337UtahaComparing Plants (IOI20_plants)C++14
0 / 100
1 ms512 KiB
#include "plants.h" #include<bits/stdc++.h> using namespace std; const int maxn = 305; #define REP(i,n) for(int i=0;i<(n);i++) #define eb emplace_back #define pb push_back #define SZ(a) ((int)a.size()) #define ALL(a) a.begin(),a.end() int n,k; bool vis[maxn]; int a[maxn]; int find_ans(vector<int> v){ sort(ALL(v)); vector<int> tmp=v; for(int i:v) tmp.pb(i+n); REP(i,SZ(tmp)-1){ if(tmp[i+1]-tmp[i]>=n/2) return tmp[i+1]%n; } assert(0); return -1; } void init(int _k, std::vector<int> r) { n = r.size(); k = _k; assert(k*2>n); REP(T,n){ vector<int> idx; REP(j,n) if(!vis[j]){ if(r[j]==0) idx.pb(j); } int t = find_ans(idx); a[t] = n-T; REP(i,k-1){ int pre = (t-1-i+n)%n; r[pre]--; } } return; } // bool between(int idx,int l,int r){ // if(l<=idx&&idx<r) return 1; // if(l<=idx+n&&idx+n<r) return 1; // // cout<<idx<<' '<<l<<' '<<r<<endl; // return 0; // } int compare_plants(int x, int y) { // if(between(y,x,x+k)){ // if(v[x]==0) return 1; // else if(v[x] == k-1) return -1; // } // if(between(x,y,y+k)){ // if(v[y]==0) return -1; // else if(v[y] == k-1) return 1; // } // return 0; if(a[x]>a[y]) return 1; else if(a[y]>a[x]) 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...