QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#239924 | #5507. Investors | KLPP# | WA | 13ms | 9716kb | C++20 | 1.6kb | 2023-11-05 00:40:44 | 2023-11-05 00:40:45 |
Judging History
answer
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef long long int lld;
typedef tree<pair<int,int> ,null_type,less<pair<int,int> >,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define trav(a,v) for(auto a:v)
#define all(x) begin(x),end(x)
const lld INF=1e18;
lld In[6000][6005];
lld arr[6000];
ordered_set O;
lld DP[6000][6005];
void calc(int l, int r, int optl, int optr, int level){
if(l>r)return;
int mid=(l+r)/2;
int best=-1;
rep(i,optl,min(mid,optr+1)){
if(DP[mid][level]>DP[i][level-1]+In[i][mid-1]){
DP[mid][level]=DP[i][level-1]+In[i][mid-1];
best=i;
}
}
//~ cout<<mid<<" "<<level<<" "<<DP[mid][level]<<" "<<best<<endl;
calc(l,mid-1,optl,best,level);
calc(mid+1,r,best,optr,level);
}
void solve(){
int n,k;
cin>>n>>k;
k++;
rep(i,0,n)cin>>arr[i];
rep(i,0,n){
O.clear();
lld inv=0;
rep(j,i,n){
inv+=O.size()-O.order_of_key(pair<int,int>(arr[j],j));
O.insert(pair<int,int>(arr[j],j));
In[i][j]=inv;
//cout<<i<<" "<<j<<" "<<inv<<endl;
}
}
rep(i,0,n+1){
rep(j,0,k+1)DP[i][j]=INF;
}
DP[0][0]=0;
rep(j,1,k+1)calc(j,n,j-1,n,j);
//~ rep(i,0,k+1){
//~ rep(j,0,n+1)cout<<DP[j][i]<<" ";
//~ cout<<endl;
//~ }
cout<<DP[n][k]<<"\n";
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int tt=1;
cin>>tt;
while(tt--){
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5496kb
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: 13ms
memory: 9716kb
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 15 145 0 2 1 0 13 13 23 0 0 0 1 0 0 0 0 0 0 0 0 161 3 0 0 1 0 1000000000000000000 0 0 0 0 1 1000000000000000000 3 0 0 1 0 0 1 0 0 1 4 0 0 0 0 0 0 0 0 2 0 2 0 1000000000000000000 8 280 0 0 34 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 11 5 0 0 0...
result:
wrong answer 30th lines differ - expected: '0', found: '1000000000000000000'