Submission #1394943
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int ll
#define FOR(i, a, b) for (int i = (a); i < int(b); ++i)
#define RFOR(i, a, b) for (int i = (b)-1; i >= int(a); --i)
#define rep(i, n) FOR(i, 0, n)
#define rep1(i, n) FOR(i, 1, int(n) + 1)
#define rrep(i, n) RFOR(i, 0, n)
#define rrep1(i, n) RFOR(i, 1, int(n) + 1)
#define all(c) begin(c), end(c)
const int MOD = 1000000007;
template <typename T>
void __dump__(std::ostream &os, const T &first) {
os << first;
}
template <typename First, typename... Rest>
void __dump__(std::ostream &os, const First &first, const Rest &... rest) {
os << first << ", ";
__dump__(os, rest...);
}
#define dump(...) \
do { \
std::ostringstream os; \
os << __LINE__ << ":\t" << #__VA_ARGS__ << " = "; \
__dump__(os, __VA_ARGS__); \
std::cerr << os.str() << std::endl; \
} while (0)
int n, m;
int reduce[200010];
int imos0[200010], imos1[200010];
// f[l] += x, f[l+1] += x+y, f[l+2] += x+2y...
void add(int l, int r, long long a, long long b) {
imos0[l] += a;
imos0[r] -= a;
imos0[l] -= b * l;
imos0[r] += b * l;
imos1[l] += b;
imos1[r] -= b;
}
int ss[100010];
signed main() {
while (cin >> n >> m) {
memset(imos0, 0, sizeof imos0);
memset(imos1, 0, sizeof imos1);
rep(i, n) {
cin >> ss[i];
--ss[i];
}
rep(i, n - 1) {
int s = ss[i], d = ss[i + 1];
dump(s, d);
if (s < d) {
add(s + 2, d + 1, 1, 1);
} else if (d < s) {
add(s + 2, s + m + 2, 1, 1);
add(0, d + 1, m - s - 1, 1);
}
}
rep(i, m) {
imos0[i + 1] += imos0[i];
imos1[i + 1] += imos1[i];
}
rep(i, m) {
reduce[i] = imos0[i] + imos1[i] * i;
// dump(i, reduce[i]);
}
int maxi = *max_element(reduce, reduce + m);
int org = 0;
rep(i, n - 1) {
int s = ss[i], d = ss[i + 1];
int add;
if (s < d) add = d - s;
else add = d + m - s;
// dump(org);
org += add;
}
dump(org, maxi);
cout << org - maxi << endl;
}
}
Submission Info
Submission Time |
|
Task |
E - guruguru |
User |
tubo28 |
Language |
C++14 (GCC 5.4.1) |
Score |
700 |
Code Size |
2532 Byte |
Status |
AC |
Exec Time |
179 ms |
Memory |
4992 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
700 / 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 |
46 ms |
3968 KB |
half1.txt |
AC |
17 ms |
4224 KB |
half2.txt |
AC |
79 ms |
4352 KB |
half3.txt |
AC |
140 ms |
4224 KB |
half4.txt |
AC |
135 ms |
4608 KB |
min_m.txt |
AC |
2 ms |
3584 KB |
min_n.txt |
AC |
3 ms |
4096 KB |
mx0.txt |
AC |
176 ms |
4992 KB |
mx1.txt |
AC |
179 ms |
4992 KB |
mx2.txt |
AC |
178 ms |
4992 KB |
rnd0.txt |
AC |
2 ms |
3584 KB |
rnd1.txt |
AC |
2 ms |
3584 KB |
rnd2.txt |
AC |
9 ms |
3584 KB |
rnd3.txt |
AC |
32 ms |
3712 KB |
rnd4.txt |
AC |
139 ms |
4224 KB |
rnd5.txt |
AC |
8 ms |
3584 KB |
rnd6.txt |
AC |
2 ms |
3584 KB |
rnd7.txt |
AC |
4 ms |
3584 KB |
rnd8.txt |
AC |
16 ms |
3584 KB |
rnd9.txt |
AC |
2 ms |
3584 KB |
sample1.txt |
AC |
2 ms |
3584 KB |
sample2.txt |
AC |
2 ms |
3584 KB |