Submission #961114

#TimeUsernameProblemLanguageResultExecution timeMemory
961114happy_nodeGroup Photo (JOI21_ho_t3)C++17
64 / 100
5043 ms98320 KiB
#include <bits/stdc++.h>
using namespace std;

const int MX=5005;

int N;
int H[MX], dp[MX], cnt[MX][MX], curCnt[MX], pos[MX];

int main() {
	cin.tie(0); ios_base::sync_with_stdio(0);

	cin>>N;
	for(int i=1;i<=N;i++) cin>>H[i];

	for(int i=1;i<=N;i++) dp[i]=1e9;

	for(int i=1;i<=N;i++) {
		pos[H[i]]=i;
		for(int j=H[i];j<=N;j++) curCnt[j]++;
		for(int j=1;j<=N;j++) cnt[i][j]=curCnt[j];
	}

	for(int i=0;i<=N;i++) {
		for(int k=i+1;k<=N;k++) {
			int cost=0;
			for(int j=k;j>i;j--) {
				int cur=0;
				cur+=cnt[pos[j]][N];
				cur-=cnt[pos[j]][k];
				cur+=cnt[pos[j]][j-1];
				cur-=cnt[pos[j]][i];

				cost+=cur;
			}
			dp[k]=min(dp[k],dp[i]+cost);
		}
	}

	cout<<dp[N]<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...