记录编号 259219 评测结果 AAAAAAAAAA
题目名称 筷子 最终得分 100
用户昵称 GravatarNewBee 是否通过 通过
代码语言 C++ 运行时间 0.024 s
提交时间 2016-05-08 16:05:04 内存使用 0.28 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #include<cstring>
  3. #define Cu fclose(stdin);fclose(stdout);return 0
  4. #define Begin freopen("chop.in","r",stdin);freopen("chop.out","w",stdout);chul();Cu;
  5. using namespace std;
  6. //designed by New_Beeؼ
  7. const int maxn=110;
  8. int f[maxn][maxn>>1];
  9. int a[maxn];
  10. void chul();
  11. void top(int);
  12. int min(int,int);
  13. int main(){
  14. Begin;
  15. }
  16. void chul(){
  17. int n,m;scanf("%d%d",&n,&m);m+=3;
  18. for(int i=1;i<=n;i++){
  19. scanf("%d",&a[i]);
  20. }
  21. if(m*2>n){
  22. printf("-1");
  23. return;
  24. }
  25. top(n);
  26. for(int j=1;j<=m;j++){
  27. for(int i=j*2;i<=n;i++){
  28. f[i][j]=min(f[i][j],f[i-1][j]);
  29. int t=a[i]-a[i-1];
  30. f[i][j]=min(f[i][j],f[i-2][j-1]+t*t);
  31. }
  32. }
  33. printf("%d",f[n][m]);
  34. }
  35. void top(int n){
  36. memset(f,0x7f,sizeof(f));
  37. f[0][0]=0;
  38. for(int i=1;i<=n;i++){
  39. int x=0x7fffffff,p;
  40. for(int j=i;j<=n;j++){
  41. if(a[j]<x){
  42. x=a[j];
  43. p=j;
  44. }
  45. }
  46. int t=a[i];
  47. a[i]=x;
  48. a[p]=t;
  49. }
  50. }
  51. int min(int x,int y){
  52. if(x>y)return y;
  53. return x;
  54. }
  55. /*
  56. 10 1
  57. 1 1 2 3 3 3 4 6 10 20
  58. */