比赛 20161114 评测结果 WAAWWAWWWW
题目名称 社长的qwa 最终得分 30
用户昵称 jmisnal 运行时间 0.736 s
代码语言 C++ 内存使用 1.84 MiB
提交时间 2016-11-14 11:38:42
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#define ll long long
using namespace std;
int n,k,a[100005],pos,gs[100005],cha[100005],sb[100005];
ll ans,small;
int main()
{
//	freopen("abcd.in","r",stdin);
//	freopen("2.out","w",stdout);
	freopen("qwa.in","r",stdin);
	freopen("qwa.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=k;i++)
	{
		gs[i]=i*(k-i);	
	}
	
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	sort(a+1,a+n+1);
	for(int i=2;i<=n;i++)
		cha[i]=a[i]-a[i-1];
	pos=1;
	for(int i=1;i<k;i++)
	{
		ans+=cha[i+1]*gs[i];
//		cout<<cha[i+1]<<" "<<gs[i]<<endl;
	}
/*	for(int i=3;i<=k;i++)
		sb[k]+=cha[i];
	for(int i=k+1;i<=n;i++)
		sb[i]=sb[i-1]-cha[ i-k+2 ]+cha[i];
	for(int i=1;i<=k;i++)
		cout<<gs[i]<<' ';
	return 0;
*/
	small=ans;
//	for(int i=1;i<=20;i++)
//		cout<<a[i]<<" ";
//	cout<<endl;
//	cout<<ans<<endl;
	for(int i=2;i+k-1<=n;i++)
	{
		ans=ans-( cha[i] )*gs[1]+cha[i+k-1]*(k-1);
		for(int j= 1;j< k-1;j++  )
		{
			ans -= (gs[j+1]-gs[j])*cha[i+j];
		}
		//ans+=(cha[i+k-1])*(k-1);
	//	cout<<ans<<' ';
	//	if(ans<small)small=ans;
	//	cout<<ans<<endl;
		if(ans<small)
		{
			small=ans;
	/*		for(int j=i;j<=i+k-1;j++)
				cout<<a[j]<<" ";
			cout<<endl;
	*/	}
	}
	printf("%lld",small);
	return 0;
}