#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<int> 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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |