比赛 20110412 评测结果 AWWAWAWWWW
题目名称 山顶问题 最终得分 30
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-04-12 09:44:00
显示代码纯文本
#include<fstream>

using namespace std;

long long n,K,a[100002],hi[100002];

int main()
{
	long long i,j,k,minn=0x7fffffff,ans=0,top=0;
	ifstream fin("peaks.in");
	ofstream fout("peaks.out");
	fin>>n>>K;
	memset(a,0,sizeof(a));
	for(i=1;i<=n;i++)
	{
		fin>>a[i];
		if(minn>a[i])
			minn=a[i];
	}
	for(i=1;i<=n;i++)
		if((a[i]>a[i-1])&&(a[i]>=a[i+1]))
			top++;
	if(top<=K)
	{
		fout<<'0';
		fin.close();
		fout.close();
		return 0;
	}
	k=top;
	for(i=1;i<=n;i++)
	{
		if(a[i]!=minn)
		{
			for(j=i;j<=n;j++)
				if(a[j]==minn)
				{
					i=j;
					break;
				}
				else
					hi[k]+=a[j]-minn;
			k--;
		}
	}
	k=top-K;
	sort(hi+1,hi+1+top);
	for(i=1;i<=top;i++)
		if((hi[i]!=0)&&(k>0))
		{
			ans+=hi[i];
			k--;
		}
	fout<<ans;
	fin.close();
	fout.close();
	return 0;
}