序号:1079
[绍兴2019]排队
Time Limit:1s Memory Limit:512MB
题目描述:
洛洛在外出旅游的时候发现社会上文明的现象越来越多,人们在买票的时候都会自 发地排队等候。 遗憾的是排队的人身高参差不齐,有时候前后两人之间的身高相差太大,缺乏一些 美感。 如果把前后两人的身高差(差值为正数)表示为两者前后相邻时产生的违和度,一段 连续的人群因为前后两人身高不同而产生的违和度之和就可以被称为违和值。洛洛希望 知道在队伍哪一段,且该段队伍由连续的 m 个人组成,其违和值最小。
输入格式:
第一行输入两个正整数 n,m,n 表示队伍的总人数,m 表示某一段的人数。 第二行输入 n 个整数,表示队伍中 n 个人的身高(单位:厘米)。
输出格式:
输出包含一个整数,即最小的违和值。
输入样例:
4 3
1 2 4 7
输出样例:
3
#include<bits/stdc++.h>
using namespace std;
int a[101010];
int p[101010];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
p[i]=p[i-1]+abs(a[i]-a[i+1]);
}
int ans=9e8;
for(int i=m-1;i<=n-1;i++){
ans=min(ans,p[i]-p[i-m+1]);
}
cout<<ans;
return 0;
}