记录编号 216897 评测结果 AAAAA
题目名称 混合牛奶 最终得分 100
用户昵称 Gravatardateri 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2016-01-01 13:00:07 内存使用 0.37 MiB
显示代码纯文本
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int a[5010][2]={0},b[5010][2]={0},m,n,ans=0;
  4. void merge(int l,int r)
  5. {
  6. int mid=(l+r)/2,i=l,p=l,q=mid+1;
  7. while(p<=mid||q<=r)
  8. if(q>r||p<=mid&&a[p][0]<=a[q][0])
  9. {
  10. b[i][0]=a[p][0];
  11. b[i++][1]=a[p++][1];
  12. }
  13. else
  14. {
  15. b[i][0]=a[q][0];
  16. b[i++][1]=a[q++][1];
  17. }
  18. for(i=l;i<=r;i++)
  19. {
  20. a[i][0]=b[i][0];
  21. a[i][1]=b[i][1];
  22. }
  23. }
  24. void msort(int l,int r)
  25. {
  26. if(l>=r)
  27. return;
  28. int mid=(l+r)/2;
  29. msort(l,mid);
  30. msort(mid+1,r);
  31. merge(l,r);
  32. }
  33. int main()
  34. {
  35. freopen("milk.in","r",stdin);
  36. freopen("milk.out","w",stdout);
  37. scanf("%d%d",&m,&n);
  38. for(int i=0;i<n;i++)
  39. scanf("%d%d",&a[i][0],&a[i][1]);
  40. msort(0,n-1);
  41. for(int i=0;i<n;i++)
  42. if(a[i][1]>=m)
  43. {ans+=a[i][0]*m;break;}
  44. else
  45. {
  46. ans+=a[i][1]*a[i][0];
  47. m-=a[i][1];
  48. }
  49. printf("%d",ans);
  50. return 0;
  51. }