比赛 csp2025模拟练习3 评测结果 AAAAAAAAA
题目名称 Symmetric Mountains 最终得分 100
用户昵称 梧叶已同秋雨去 运行时间 0.163 s
代码语言 C++ 内存使用 3.72 MiB
提交时间 2025-10-30 08:42:13
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,a[5005],ans=1e16,f[5005];
void check(int x){
	int cnt=0;
	int y=x+1;
	int nx=x,ny=y;
	long long sum=0;
	while(x>=1&&y<=n){
		sum+=abs(a[x]-a[y]);
		x--;
		y++;
		cnt+=2;
//		cout<<cnt<<" "<<sum<<endl;
		f[cnt]=min(f[cnt],sum);
	}
	nx--;sum=0;
	cnt=1;
	while(nx>=1&&ny<=n){
		sum+=abs(a[nx]-a[ny]);
		nx--;
		ny++;
		cnt+=2;
//		cout<<cnt<<" "<<sum<<endl;
		f[cnt]=min(f[cnt],sum);
	}
}
int main(){
	freopen("Mountains.in","r",stdin);
	freopen("Mountains.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		f[i]=1e16;
	}
	f[1]=0;
	for(int i=1;i<=n;i++){
//		cout<<i<<endl;
		check(i);
	}
	for(int i=1;i<=n;i++){
		cout<<f[i]<<" ";
	}
	return 0;
}