比赛 20161114 评测结果 AAAAAAAAAA
题目名称 社长的qwa 最终得分 100
用户昵称 AAAAAAAAAA 运行时间 0.018 s
代码语言 C++ 内存使用 0.95 MiB
提交时间 2016-11-14 12:01:57
显示代码纯文本
  1. #include<cstdio>
  2. #include<algorithm>
  3. #define INF (ll)1<<62
  4. typedef long long ll;
  5. namespace IO{
  6. char buf[1<<15],*fs,*ft;
  7. inline char gc(){return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin)),fs==ft)?0:*fs++;}
  8. inline ll qr(){
  9. ll x=0;
  10. int f=1;
  11. char c=gc();
  12. while(c<'0'||c>'9'){
  13. if(c=='-'){
  14. f=-1;}
  15. c=gc();}
  16. while(c>='0'&&c<='9'){
  17. x=(x<<1)+(x<<3)+c-'0';
  18. c=gc();}
  19. return f*x;}
  20. }using namespace IO;
  21. using namespace std;
  22. /***********************************************************************************************/
  23. int main(){
  24. freopen ("qwa.in","r",stdin);
  25. freopen ("qwa.out","w",stdout);
  26. int n,k,i;
  27. ll sum=0,ans=INF,delta=0,a[100010];
  28. n=qr();
  29. k=qr();
  30. for(i=1;i<=n;i++){//不能从0开始
  31. a[i]=qr();}
  32. sort(a+1,a+1+n);
  33. for(i=1;i<=k;i++){
  34. sum=sum+(i-1)*a[i]-delta;
  35. delta=delta+a[i];}
  36. for(i=k+1;i<=n;i++){
  37. if(sum<ans){
  38. ans=sum;}
  39. /*delta=delta-a[i-k];
  40. sum=sum-(delta-a[i-k]*(k-1));
  41. sum=sum+(k-1)*a[i]-delta;
  42. delta=delta+a[i];*/
  43. sum=sum-2*delta+(k+1)*a[i-k]+(k-1)*a[i];
  44. delta=delta-a[i-k]+a[i];}
  45. if(sum<ans){
  46. ans=sum;}
  47. printf("%lld",ans);
  48. return 0;
  49. }
  50.