Submission #2694453
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll M = 1e9 + 7;
const int N = 100100;
ll s[N * 4], f[N * 4], lf[N * 4], d[N * 4], ld[N * 4];
void push(int n, int a, int b) {
if (lf[n] || ld[n]) {
ll sz = (b - a + 1) / 2;
f[n * 2] += lf[n];
f[n * 2 + 1] += lf[n] + ld[n] * sz;
d[n * 2] += ld[n];
d[n * 2 + 1] += ld[n];
s[n * 2] += lf[n] * sz + ld[n] * sz * (sz - 1) / 2;
s[n * 2 + 1] += (lf[n] + ld[n] * sz) * sz + ld[n] * sz * (sz - 1) / 2;
lf[n * 2] += lf[n];
lf[n * 2 + 1] += lf[n] + ld[n] * sz;
ld[n * 2] += ld[n];
ld[n * 2 + 1] += ld[n];
lf[n] = ld[n] = 0;
}
}
ll query(int l, int r, int n = 1, int a = 1, int b = N) {
if (a > r || b < l) {
return 0;
}
if (a >= l && b <= r) {
return s[n];
}
push(n, a, b);
int mid = (a + b) / 2;
return query(l, r, n * 2, a, mid) + query(l, r, n * 2 + 1, mid + 1, b);
}
void update(int l, int r, int k = 1, int e = 1, int n = 1, int a = 1, int b = N) {
if (a >= l && b <= r) {
f[n] += k;
d[n] += e;
lf[n] += k;
ld[n] += e;
ll sz = b - a + 1;
s[n] += k * sz + e * sz * (sz - 1) / 2;
return;
}
push(n, a, b);
int mid = (a + b) / 2;
if (l <= mid) {
update(l, min(mid, r), k, e, n * 2, a, mid);
}
if (r > mid) {
update(max(mid + 1, l), r, k + e * max(mid - l + 1, 0), e, n * 2 + 1, mid + 1, b);
}
s[n] = s[n * 2] + s[n * 2 + 1];
}
int main() {
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, m;
cin >> n >> m;
vector<ll> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
if (i && a[i] < a[i - 1]) {
ll t = (a[i - 1] - a[i] + m - 1) / m;
a[i] += t * m;
}
}
ll s = a[n - 1] - a[0];
for (int i = 0; i + 1 < n; ++i) {
if (a[i + 1] - a[i] < 2) {
continue;
}
ll l = (a[i] + 2) % m;
ll r = (a[i + 1]) % m;
if (!l) {
l += m;
}
if (!r) {
r += m;
}
if (l > r) {
update(l, m);
update(1, r, m - l + 2);
} else {
update(l, r);
}
}
ll ans = s;
for (int i = 1; i <= m; ++i) {
ans = min(ans, s - query(i, i));
}
cout << ans;
return 0;
}
Submission Info
Submission Time |
|
Task |
E - guruguru |
User |
meatrow |
Language |
C++14 (GCC 5.4.1) |
Score |
0 |
Code Size |
2623 Byte |
Status |
WA |
Exec Time |
96 ms |
Memory |
15616 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 700 |
Status |
|
|
Set Name |
Test Cases |
Sample |
sample1.txt, sample2.txt |
All |
half0.txt, half1.txt, half2.txt, half3.txt, half4.txt, min_m.txt, min_n.txt, mx0.txt, mx1.txt, mx2.txt, rnd0.txt, rnd1.txt, rnd2.txt, rnd3.txt, rnd4.txt, rnd5.txt, rnd6.txt, rnd7.txt, rnd8.txt, rnd9.txt, sample1.txt, sample2.txt |
Case Name |
Status |
Exec Time |
Memory |
half0.txt |
AC |
28 ms |
13952 KB |
half1.txt |
AC |
25 ms |
14848 KB |
half2.txt |
AC |
44 ms |
14464 KB |
half3.txt |
WA |
57 ms |
14080 KB |
half4.txt |
AC |
71 ms |
15104 KB |
min_m.txt |
AC |
1 ms |
256 KB |
min_n.txt |
WA |
19 ms |
13824 KB |
mx0.txt |
WA |
95 ms |
15616 KB |
mx1.txt |
WA |
96 ms |
15616 KB |
mx2.txt |
WA |
96 ms |
15616 KB |
rnd0.txt |
WA |
8 ms |
13056 KB |
rnd1.txt |
WA |
4 ms |
12672 KB |
rnd2.txt |
WA |
9 ms |
12928 KB |
rnd3.txt |
WA |
17 ms |
12928 KB |
rnd4.txt |
WA |
45 ms |
13184 KB |
rnd5.txt |
AC |
4 ms |
12544 KB |
rnd6.txt |
WA |
3 ms |
12544 KB |
rnd7.txt |
WA |
8 ms |
13056 KB |
rnd8.txt |
WA |
9 ms |
12800 KB |
rnd9.txt |
WA |
5 ms |
12800 KB |
sample1.txt |
AC |
3 ms |
12544 KB |
sample2.txt |
AC |
4 ms |
12544 KB |