QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#140234#5507. InvestorsPhantomThreshold#WA 7ms9732kbC++201.1kb2023-08-15 15:34:422023-08-15 15:34:45

Judging History

This is the latest submission verdict.

  • [2023-08-15 15:34:45]
  • Judged
  • Verdict: WA
  • Time: 7ms
  • Memory: 9732kb
  • [2023-08-15 15:34:42]
  • Submitted

answer

#include<bits/stdc++.h>
#define ll long long
#define int long long
using namespace std;

const int maxn = 6010;

int n,K;
int a[maxn];
int pr[maxn][maxn],cost[maxn][maxn];

struct node
{
	ll c;
	int k;
}f[maxn];
void dp(const ll mid)
{
	f[n+1]=(node){0,0};
	for(int i=n;i>=1;i--)
	{
		f[i]=(node){cost[i][n],0};
		for(int j=i;j<n;j++)
		{
			node temp=(node){f[j+1].c+cost[i][j]+mid,f[j+1].k+1};
			if( f[i].c>temp.c || (f[i].c==temp.c&&f[i].k<temp.k) )
				f[i]=temp;
		}
	}
}

signed main()
{
	ios_base::sync_with_stdio(false);
	
	int Tcase; cin>>Tcase;
	while(Tcase--)
	{
		cin>>n>>K;
		for(int i=1;i<=n;i++) cin>>a[i];
		
		for(int r=1;r<=n;r++)
		{
			pr[r][r]=0;
			for(int l=r-1;l>=1;l--)
				pr[r][l]=pr[r][l+1]+(a[l]>a[r]);
		}
		for(int l=1;l<=n;l++)
		{
			cost[l][l]=0;
			for(int r=l+1;r<=n;r++)
				cost[l][r]=cost[l][r-1]+pr[r][l];
		}
		
		int inf=(n/2)*(n-n/2);
		ll l=-inf,r=inf;
		while(l<=r)
		{
			ll mid=l+(r-l)/2;
			dp(mid);
			if(f[1].k>=K) l=mid+1;
			else r=mid-1;
		}
		dp(l-1);
		cout<<f[1].c-(l-1)*K<<'\n';
	}
	
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 7520kb

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: 7ms
memory: 9732kb

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
5
0
0
0
0
1
5
3
0
0
1
0
0
1
0
0
1
4
0
0
0
0
0
0
0
0
2
0
2
0
5
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
6
0
5
0
0
0
1
0
0
0
0
0
0
1
0
0
5
0
0
0
0
13
1
0
0
0
...

result:

wrong answer 30th lines differ - expected: '0', found: '5'