Submission #59942489
Source Code Expand
#include <bits/stdc++.h>
#include <atcoder/segtree>
#define int long long
using namespace std;
using namespace atcoder;
const int N = 2e5 + 10;
const int MOD = 998244353;
const int inv2 = 499122177;
int n, k, p[N];
int op (int a, int b) {
if (a + b >= MOD) return a + b - MOD;
return a + b;
}
int e() { return 0; }
int qpow (int x, int p) {
int res = 1;
while (p) {
if (p % 2) res = res * x % MOD;
x = x * x % MOD;
p /= 2;
}
return res;
}
int inv(int x) {
return qpow(x, MOD - 2);
}
signed main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> p[i];
p[i]--;
}
int bas = 0;
{segtree<int, op, e> seg(n);
for (int i = 0; i < n; i++) {
bas += seg.prod(p[i], n);
seg.set(p[i], 1);
}}
int res = 0, sub = 0, add = (k * (k - 1) / 2LL) % MOD;
add = add * inv2 % MOD;
segtree<int, op, e> seg(n);
for (int i = 0; i < k; i++) {
(sub += seg.prod(p[i], n)) %= MOD;
seg.set(p[i], 1);
}
for (int i = k; i <= n; i++) {
int cur = (MOD + bas + add - sub) % MOD;
(res += cur) %= MOD;
if (i == n) break;
seg.set(p[i - k], 0);
(sub += (MOD - seg.prod(0, p[i - k]))) %= MOD;
(sub += seg.prod(p[i], n)) %= MOD;
seg.set(p[i], 1);
}
(res *= inv(n - k + 1)) %= MOD;
cout << res << endl;
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | G - Another Shuffle Window |
| User | jpy_cpp |
| Language | C++ 20 (gcc 12.2) |
| Score | 575 |
| Code Size | 1536 Byte |
| Status | AC |
| Exec Time | 91 ms |
| Memory | 10736 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 575 / 575 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 1 ms | 3524 KiB |
| sample_02.txt | AC | 1 ms | 3404 KiB |
| sample_03.txt | AC | 1 ms | 3412 KiB |
| test_01.txt | AC | 1 ms | 3492 KiB |
| test_02.txt | AC | 1 ms | 3496 KiB |
| test_03.txt | AC | 1 ms | 3492 KiB |
| test_04.txt | AC | 1 ms | 3424 KiB |
| test_05.txt | AC | 1 ms | 3436 KiB |
| test_06.txt | AC | 70 ms | 10640 KiB |
| test_07.txt | AC | 60 ms | 10648 KiB |
| test_08.txt | AC | 50 ms | 10676 KiB |
| test_09.txt | AC | 68 ms | 10588 KiB |
| test_10.txt | AC | 60 ms | 10700 KiB |
| test_11.txt | AC | 51 ms | 10532 KiB |
| test_12.txt | AC | 63 ms | 10424 KiB |
| test_13.txt | AC | 80 ms | 10564 KiB |
| test_14.txt | AC | 22 ms | 6504 KiB |
| test_15.txt | AC | 9 ms | 4492 KiB |
| test_16.txt | AC | 49 ms | 7536 KiB |
| test_17.txt | AC | 10 ms | 4976 KiB |
| test_18.txt | AC | 59 ms | 9956 KiB |
| test_19.txt | AC | 69 ms | 10496 KiB |
| test_20.txt | AC | 86 ms | 10712 KiB |
| test_21.txt | AC | 66 ms | 10660 KiB |
| test_22.txt | AC | 69 ms | 10600 KiB |
| test_23.txt | AC | 84 ms | 10736 KiB |
| test_24.txt | AC | 91 ms | 10624 KiB |
| test_25.txt | AC | 61 ms | 10724 KiB |
| test_26.txt | AC | 74 ms | 10692 KiB |
| test_27.txt | AC | 74 ms | 10644 KiB |