#include <bits/stdc++.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 = 2e6 + 5;
int n, k, ans;
int a[N];
int main() {
scanf("%d %d", &n, &k);
for(int i = 0; i < n; i++) {
scanf("%d", a + i);
}
bool flag = 1;
int cnt = 0;
while(flag) {
for(int i = 0; i < n; i++)
a[i + n] = a[i];
flag = 0;
set < pair < int, ii > > s;
for(int i = 0; i < n; i++) {
int j = i;
while(j + 1 < 2 * n and a[j + 1] == a[i])
j++;
if(!i and a[n - 1] == a[0]) {
i = j;
continue;
}
int l = (i + n - 1) % n;
int r = (j + 1) % n;
if(a[i] < a[l] and a[i] < a[r]) {
s.insert(make_pair(j - i + 1, ii(i, j)));
}
i = j;
}
while(s.size()) {
int len = s.begin() -> first;
int i = s.begin() -> second.first;
int j = s.begin() -> second.second;
int l = (i + n - 1) % n;
int r = (j + 1) % n;
if(k < len) {
break;
}
int p = min(k / len, min(a[l], a[r]) - a[i]);
for(; i <= j; i++) {
a[i % n] += p;
}
flag |= (bool) p;
k -= p * len;
ans += p * 2;
s.erase(s.begin());
}
cnt++;
}
printf("%d\n", ans);
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
9536 KB |
Output is correct |
2 |
Correct |
0 ms |
9536 KB |
Output is correct |
3 |
Correct |
0 ms |
9536 KB |
Output is correct |
4 |
Correct |
0 ms |
9536 KB |
Output is correct |
5 |
Correct |
0 ms |
9536 KB |
Output is correct |
6 |
Incorrect |
0 ms |
9536 KB |
Output isn't correct |
7 |
Incorrect |
0 ms |
9536 KB |
Output isn't correct |
8 |
Correct |
0 ms |
9536 KB |
Output is correct |
9 |
Correct |
0 ms |
9536 KB |
Output is correct |
10 |
Correct |
532 ms |
9536 KB |
Output is correct |
11 |
Correct |
34 ms |
11516 KB |
Output is correct |
12 |
Correct |
79 ms |
9536 KB |
Output is correct |
13 |
Execution timed out |
2000 ms |
9532 KB |
Program timed out |
14 |
Execution timed out |
2000 ms |
9532 KB |
Program timed out |
15 |
Execution timed out |
2000 ms |
9532 KB |
Program timed out |
16 |
Execution timed out |
2000 ms |
9532 KB |
Program timed out |
17 |
Execution timed out |
2000 ms |
9532 KB |
Program timed out |
18 |
Execution timed out |
2000 ms |
9532 KB |
Program timed out |
19 |
Execution timed out |
2000 ms |
9532 KB |
Program timed out |
20 |
Incorrect |
394 ms |
9536 KB |
Output isn't correct |