제출 #165605

#제출 시각아이디문제언어결과실행 시간메모리
165605Peacher29쌀 창고 (IOI11_ricehub)C++14
42 / 100
29 ms2936 KiB
#include "ricehub.h" #include<bits/stdc++.h> using namespace std; class pont{ public: int index; int ut, el; }; vector<pont> p; const bool operator<(const pont& p1, const pont& p2){ return p1.index < p2.index; } long long L; long long mennyi(long long e, long long i, long long u){ //cout << p[e].ut-p[i].ut << ' ' << (i-e)*(L-p[i].index) << ' ' << // p[u].el-p[i].el << ' ' << (u-i)*p[i].index << '\n'; return p[e].ut-p[i].ut-(i-e)*(L-p[i].index) +p[u].el-p[i].el-(u-i)*p[i].index; } int besthub(int n, int l, int x[], long long b) { L=l; int er=0; p.resize(n); for(int i=0;i<n;i++){ p[i].index=x[i]; } sort(p.begin(),p.end()); p[0].el=p[0].index; for(int i=1;i<n;i++){ p[i].el=p[i-1].el+p[i].index; } p[n-1].ut=l-p[n-1].index; for(int i=n-2;i>=0;i--){ p[i].ut=p[i+1].ut+l-p[i].index; } for(int i=0;i<n;i++){ int aa=i, bb = n-1, k; while(aa!=bb){ k=(aa+bb) /2+1; if(mennyi(i, (i+k)/2,k)<=b){ aa=k; } else { bb=k-1; } } //cout << i << ":" << aa << '\n'; er=max(er,aa-i+1); } //cout << p[2].ut << ' ' << p[3].ut << ' ' << p[4].ut << '\n' << // p[2].el << ' ' << p[3].el << ' ' << p[4].el << '\n' // << mennyi(2,3,4) << '\n'; return er; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...