QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#163776 | #5507. Investors | ahsoltan | WA | 10ms | 3600kb | C++17 | 1.8kb | 2023-09-04 15:05:03 | 2023-09-04 15:05:04 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 2137
#endif
const int INF = 1e9;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int tt;
cin >> tt;
while (tt--) {
int n, k;
cin >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int inv = 0;
vector<vector<int>> e(n);
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (a[j] < a[i]) {
inv++;
e[i + 1].push_back(inv);
e[j].push_back(-inv);
}
}
}
if (k == 0) {
cout << inv << '\n';
continue;
}
vector<int> vis(inv + 1, -1);
vector<vector<int>> c(n, vector<int>(n));
for (int i = 0; i < n; i++) {
int cnt = 0;
for (int j = i; j < n; j++) {
for (int x : e[j]) {
if (x > 0) {
vis[x] = i;
} else if (x < 0 && vis[-x] == i) {
cnt++;
}
}
c[i][j] = cnt;
}
}
vector<int> dp(n);
for (int i = 1; i < n; i++) {
dp[i] = c[0][i - 1];
}
auto f = [&] (int i, int j) {
return dp[i] + (j - 1 >= i + 1 ? c[i + 1][j - 1] : 0);
};
for (int i = 1; i < k; i++) {
vector<int> ndp(n);
deque<int> q;
q.push_back(0);
for (int j = 1; j < n; j++) {
while ((int)q.size() > 1 && f(q[1], j) <= f(q[0], j)) {
q.pop_front();
}
ndp[j] = f(q[0], j);
while (!q.empty() && dp[q.back()] >= dp[j]) {
q.pop_back();
}
q.push_back(j);
}
swap(dp, ndp);
}
int ans = INF;
for (int i = 0; i < n; i++) {
ans = min(ans, f(i, n));
}
cout << ans << '\n';
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3568kb
input:
2 6 1 4 5 6 2 2 1 6 2 4 5 6 2 2 1
output:
2 0
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 10ms
memory: 3600kb
input:
349 6 2 2 1 2 1 2 1 48 12 42 47 39 39 27 25 22 44 45 13 5 48 38 4 37 6 24 10 42 38 12 37 31 19 44 6 29 17 7 12 7 26 35 24 15 9 37 3 27 21 33 29 34 20 14 30 31 21 48 12 1 43 17 46 17 39 40 22 25 2 22 12 4 11 38 12 4 11 1 5 39 44 37 10 19 20 42 45 2 45 37 20 48 34 16 41 23 18 13 44 47 21 29 4 23 18 16...
output:
1 18 16 160 0 2 1 0 21 13 24 0 0 0 1 0 0 0 0 0 0 0 0 188 3 0 0 1 0 0 0 0 0 0 1 0 3 0 0 1 0 0 1 0 0 1 4 0 0 0 0 0 0 0 0 2 0 2 0 0 8 280 0 0 48 4 0 1 0 0 3 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 2 0 0 0 0 0 0 0 8 1 8 0 0 0 0 1 16 5 0 0 0 6 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 13 1 0 0 0 ...
result:
wrong answer 3rd lines differ - expected: '15', found: '16'