比赛 csp2025模拟练习3 评测结果 AAAAAAAAA
题目名称 Symmetric Mountains 最终得分 100
用户昵称 徐诗畅 运行时间 0.150 s
代码语言 C++ 内存使用 3.88 MiB
提交时间 2025-10-30 09:26:49
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5005;
int n,a[N],ans[N];
signed main(){
	freopen("Mountains.in","r",stdin);
	freopen("Mountains.out","w",stdout);
	scanf("%lld",&n); 
	for(int i = 1;i<=n;i++) scanf("%lld",&a[i]),ans[i]=1e18;
	ans[1]=0;
	for(int mid = 1;mid<=n;mid++){
		int sum=0,len=1,l=mid,r=mid;
		while(l>1&&r<n){
			r++; l--; len+=2; 
			sum+=abs(a[r]-a[l]);
			ans[len]=min(ans[len],sum);
		}
	}
	for(int mid=1;mid<n;mid++){
		int sum=abs(a[mid]-a[mid+1]),l=mid,r=mid+1,len=2;
		ans[2]=min(ans[2],sum);
		while(l>1&&r<n){
			r++; l--; len+=2;
			sum+=abs(a[r]-a[l]);
			ans[len]=min(ans[len],sum);
		}
	}
	for(int i =1;i<=n;i++)
	printf("%lld ",ans[i]);
	return 0;
}