#include <bits/stdc++.h>
#include "ricehub.h"
using namespace std;
#define type(x) __typeof((x).begin())
#define foreach(it, x) for(type(x) it = (x).begin(); it != (x).end(); it++)
typedef long long ll;
typedef pair < int, int > ii;
const int inf = 1e9 + 333;
const ll linf = 1e18 + inf;
const int N = 1e6 + 5;
int n;
ll m;
int a[N];
ll L[N], R[N];
int ptr;
ll getL(int i, int j) {
return (ll) (j - i + 1) * a[j] - (L[j] - L[i - 1]);
}
ll getR(int i, int j) {
return L[j] - L[i - 1] - (ll) (j - i + 1) * a[i];
}
bool check(int i, int j) {
ll need = getL(i, j);
if(need > m)
return 0;
while(ptr + 1 <= n and a[ptr + 1] - a[j] <= a[j] - a[i] and need + getR(j, ptr + 1) <= m)
ptr++;
return 1;
}
int solve() {
for(int i = 1; i <= n; i++)
L[i] = L[i - 1] + a[i];
for(int i = n; i >= 1; i--)
R[i] = R[i + 1] + a[i];
:: ptr = 1;
int ptr = 1, ans = 1;
for(int i = 1; i <= n; i++) {
while(ptr + 1 <= n and check(i, ptr + 1))
ptr++;
//printf("i = %d ptr = %d :: ptr = %d\n", i, ptr, :: ptr);
ans = max(ans, :: ptr - i + 1);
}
return ans;
}
int besthub(int R, int L, int X[], long long B) {
n = R;
m = B;
for(int i = 0; i < n; i++) {
a[i + 1] = X[i];
X[i] = L - X[i] + 1;
}
int ans = solve();
for(int i = 1; i <= n; i++) {
a[i] = X[n - i];
}
return max(ans, solve());
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
25160 KB |
Output is correct |
2 |
Correct |
0 ms |
25160 KB |
Output is correct |
3 |
Correct |
0 ms |
25160 KB |
Output is correct |
4 |
Correct |
0 ms |
25160 KB |
Output is correct |
5 |
Incorrect |
0 ms |
25160 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
25160 KB |
Output is correct |
2 |
Correct |
0 ms |
25160 KB |
Output is correct |
3 |
Correct |
0 ms |
25160 KB |
Output is correct |
4 |
Correct |
0 ms |
25160 KB |
Output is correct |
5 |
Correct |
0 ms |
25160 KB |
Output is correct |
6 |
Correct |
0 ms |
25160 KB |
Output is correct |
7 |
Correct |
0 ms |
25160 KB |
Output is correct |
8 |
Correct |
0 ms |
25160 KB |
Output is correct |
9 |
Correct |
0 ms |
25160 KB |
Output is correct |
10 |
Correct |
0 ms |
25160 KB |
Output is correct |
11 |
Correct |
0 ms |
25160 KB |
Output is correct |
12 |
Correct |
0 ms |
25160 KB |
Output is correct |
13 |
Correct |
0 ms |
25160 KB |
Output is correct |
14 |
Incorrect |
0 ms |
25160 KB |
Output isn't correct |
15 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
25160 KB |
Output is correct |
2 |
Correct |
0 ms |
25160 KB |
Output is correct |
3 |
Correct |
0 ms |
25160 KB |
Output is correct |
4 |
Correct |
0 ms |
25160 KB |
Output is correct |
5 |
Correct |
0 ms |
25160 KB |
Output is correct |
6 |
Correct |
0 ms |
25160 KB |
Output is correct |
7 |
Correct |
0 ms |
25160 KB |
Output is correct |
8 |
Correct |
0 ms |
25160 KB |
Output is correct |
9 |
Correct |
0 ms |
25160 KB |
Output is correct |
10 |
Correct |
0 ms |
25160 KB |
Output is correct |
11 |
Correct |
0 ms |
25160 KB |
Output is correct |
12 |
Correct |
0 ms |
25160 KB |
Output is correct |
13 |
Correct |
0 ms |
25160 KB |
Output is correct |
14 |
Correct |
0 ms |
25160 KB |
Output is correct |
15 |
Incorrect |
0 ms |
25160 KB |
Output isn't correct |
16 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
25160 KB |
Output is correct |
2 |
Correct |
0 ms |
25160 KB |
Output is correct |
3 |
Correct |
27 ms |
25160 KB |
Output is correct |
4 |
Correct |
14 ms |
25160 KB |
Output is correct |
5 |
Correct |
12 ms |
25160 KB |
Output is correct |
6 |
Correct |
12 ms |
25160 KB |
Output is correct |
7 |
Correct |
21 ms |
25160 KB |
Output is correct |
8 |
Correct |
24 ms |
25160 KB |
Output is correct |
9 |
Correct |
10 ms |
25160 KB |
Output is correct |
10 |
Correct |
10 ms |
25160 KB |
Output is correct |
11 |
Correct |
22 ms |
25160 KB |
Output is correct |
12 |
Correct |
25 ms |
25160 KB |
Output is correct |
13 |
Incorrect |
13 ms |
25160 KB |
Output isn't correct |
14 |
Halted |
0 ms |
0 KB |
- |