제출 #1250097

#제출 시각아이디문제언어결과실행 시간메모리
1250097Nurislam쌀 창고 (IOI11_ricehub)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> //#include "grader.cpp" #include "ricehub.h" using namespace std; typedef long long ll; ll inf = 1e18; int besthub(int n, int L, int A[], ll b){ vector<ll> a(n); for(int i = 0; i < n; i ++ ) a[i] = A[i]; sort(a.begin(), a.end()); ll ans = 0; for(int i = 0; i < n; i ++ ) { ll l = i, r = i, cur = 0; while(1) { ll nl = (l == 0 ? inf : a[i]-a[l-1]); ll nr = (r ==n-1? inf : a[r+1]-a[i]); if(nl == inf && nr == inf)break; if(nl < nr && nl + cur <= b) { cur += nl;l--; }else if(nr < nl && nr + cur <= b) { cur += nr;r++; }else break; }; ans = max(ans, r-l+1); }; //ll cur = 0; //ll l = 0, r = 0; //for(int i = 0; i < n; i ++ ) { //while(r+1 < n && a[i] - a[l] > a[r+1] - a[l]){ //r ++; //cur += a[r] - a[i]; //cur += a[i] - a[l]; //l ++; //}; //while(1) { //ll lf = (l== 0 ? inf: a[i] - a[l-1]); //ll ri = (r==n-1 ? inf: a[r+1] - a[i]); //if(lf == inf && ri == inf) break; //if(lf <= ri && lf + cur <= b) { //cur += lf; //l -- ; //}else if(ri < lf && ri + cur <= b) { //cur += ri; //r ++ ; //}else break; //}; //ans = max(ans, r-l+1); //if(i+1 < n) { //cur += ((i-l+1) - (r - i)) * (a[i+1]-a[i]); //if(r < i+1) r++; //while(l <= i && cur > b) { //cur -= (a[i+1] - a[l]); //l ++ ; //}; //}; //}; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...