| 比赛 |
csp2025模拟练习3 |
评测结果 |
AWAAAAAWA |
| 题目名称 |
Symmetric Mountains |
最终得分 |
78 |
| 用户昵称 |
陆晨洗 |
运行时间 |
0.126 s |
| 代码语言 |
C++ |
内存使用 |
3.81 MiB |
| 提交时间 |
2025-10-30 10:40:34 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n;
int h[5010]={0};
int q[5010]={0};
int m[310][310]={0};
int main()
{
freopen("Mountains.in","r",stdin);
freopen("Mountains.out","w",stdout);
int ans,sum,i,j,k;
cin>>n;
if(n<=300)
{
for(i=1;i<=n;i++)
{
cin>>h[i];
for(j=1;j<i;j++)
{
m[j][i]=abs(h[i]-h[j]);
m[i][j]=m[j][i];
}
}
for(i=1;i<=n;i++)
{
ans=-1;
if(i==1)
{
cout<<"0"<<" ";
continue;
}
for(j=1;j<=n-i+1;j++)
{ sum=0;
for(k=j;k<=j+i/2;k++)
{
sum=sum+m[k][k+i/2];
}
if(ans>sum||ans==-1)
{
ans=sum;
}
}
cout<<ans<<" ";
}
}
else
{
for(i=1;i<=n;i++)
{
cin>>h[i];
q[i]=q[i-1]+h[i];
}
for(i=1;i<=n;i++)
{
ans=-1;
if(i==1)
{
cout<<"0"<<" ";
continue;
}
for(j=1;j<=n-i+1;j++)
{
sum=q[i+j-1]-q[i/2+j+(i%2)-1]-q[i/2+j-1]+q[j-1];
if(ans>sum||ans==-1)
{
ans=sum;
}
}
cout<<ans<<" ";
}
}
return 0;
}