QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#712888 | #9584. 顾影自怜 | fsy_juruo | TL | 1924ms | 130352kb | C++17 | 1.3kb | 2024-11-05 17:23:32 | 2024-11-05 17:23:32 |
Judging History
answer
#include <bits/stdc++.h>
using LL = long long;
const int maxN = 1e6 + 10;
int T, n, k;
int a[maxN], max[maxN][21];
std::vector<int> e[maxN];
std::set<int> allowed, banned, neg;
int main() {
std::ios::sync_with_stdio(false); std::cin.tie(nullptr);
std::cin >> T;
while(T--) {
std::cin >> n >> k;
for(int i = 1; i <= n; i++) {
std::cin >> a[i];
e[a[i]].emplace_back(i);
banned.insert(i);
neg.insert(-i);
}
LL ans = 0;
banned.insert(n + 1);
neg.insert(0);
for(int i = 1; i <= n; i++) {
for(auto u : e[i]) {
banned.erase(u);
allowed.insert(u);
neg.erase(-u);
}
if(e[i].size() < k) continue;
for(int j = 0; j <= e[i].size() - k; j++) {
int require = e[i][j + k - 1];
int pos = *banned.lower_bound(e[i][j]);
if(require <= pos - 1) {
int lpos = -(*neg.lower_bound(-e[i][j]));
lpos = std::max(lpos, (j == 0 ? 0 : e[i][j - 1]));
ans += 1ll * (e[i][j] - lpos) * (pos - require);
// std::cout << pos << " " << lpos << " " << i << " " << e[i][j] << " " << require << "\n";
}
}
}
std::cout << ans << "\n";
for(int i = 1; i <= n; i++) {
e[a[i]].clear();
}
allowed.clear();
banned.clear();
neg.clear();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 29672kb
input:
2 5 2 1 3 3 2 2 4 3 1 4 2 1
output:
7 0
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 829ms
memory: 130352kb
input:
1 1000000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
output:
500000500000
result:
ok single line: '500000500000'
Test #3:
score: 0
Accepted
time: 184ms
memory: 29252kb
input:
158921 1 1 1 2 1 1 1 2 2 1 1 2 1 1 2 2 2 1 2 2 1 2 1 2 2 2 1 2 1 2 2 2 2 2 2 3 1 1 1 1 3 2 1 1 1 3 3 1 1 1 3 1 1 1 2 3 2 1 1 2 3 3 1 1 2 3 1 1 1 3 3 2 1 1 3 3 3 1 1 3 3 1 1 2 1 3 2 1 2 1 3 3 1 2 1 3 1 1 2 2 3 2 1 2 2 3 3 1 2 2 3 1 1 2 3 3 2 1 2 3 3 3 1 2 3 3 1 1 3 1 3 2 1 3 1 3 3 1 3 1 3 1 1 3 2 3 2...
output:
1 3 1 3 0 3 0 3 1 6 3 1 6 1 0 6 1 0 6 0 0 6 2 0 6 0 0 6 0 0 6 0 0 6 2 0 6 1 0 6 1 0 6 0 0 6 2 0 6 3 1 6 1 0 6 0 0 6 0 0 6 2 0 6 1 0 6 0 0 6 1 0 6 0 0 6 1 0 6 1 0 6 2 0 6 2 0 6 3 1 10 6 3 1 10 3 1 0 10 3 1 0 10 3 1 0 10 1 0 0 10 4 0 0 10 1 0 0 10 1 0 0 10 1 0 0 10 1 0 0 10 4 0 0 10 1 0 0 10 1 0 0 10 ...
result:
ok 158921 lines
Test #4:
score: 0
Accepted
time: 907ms
memory: 130344kb
input:
1 1000000 1000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 1000000 1 100...
output:
498003996002
result:
ok single line: '498003996002'
Test #5:
score: 0
Accepted
time: 1924ms
memory: 94728kb
input:
24 217838 1 11125 61539 156386 82530 15545 110745 20051 71328 216682 107717 24565 71482 196259 23920 79507 74383 81434 99615 50571 31499 93241 126374 205674 57290 166999 83044 89340 72667 55001 143151 30341 98608 191197 96249 176106 113045 116438 34417 92531 200248 38119 106697 24629 117110 129552 1...
output:
23726806041 1590954891 782239681 139362697540 3608208775 205782590 1992948 1449 78 2701 6 1 720 4660 34 9 91 21 1 18 3 10 1 1
result:
ok 24 lines
Test #6:
score: -100
Time Limit Exceeded
input:
26 946385 1 670117 545657 843923 412448 720179 557739 318687 474032 740066 816184 884900 216879 154424 237010 571714 191989 697715 453717 521834 329605 911786 112304 586798 162144 800808 303697 80404 576671 153923 684638 852686 842726 624241 934235 466016 691917 89781 33743 257181 791555 572665 1112...