比赛 |
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;
}