记录编号 132158 评测结果 AAAAAAAAA
题目名称 [USACO Oct09] 零用钱 最终得分 100
用户昵称 Gravatar乌龙猹 是否通过 通过
代码语言 C++ 运行时间 0.176 s
提交时间 2014-10-25 15:37:11 内存使用 0.40 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<cstring>
  5. using namespace std;
  6. struct dx
  7. {
  8. int v;
  9. int b;
  10. };
  11. bool my_comp(const dx &a,const dx &c)
  12. {
  13. return a.v>c.v;
  14. }
  15. void init();
  16. dx a[11000];
  17. int fang=0,sheng,n,c,sum=0;
  18. void init()
  19. {
  20. memset(a,0,sizeof(a));
  21. cin>>n>>c;
  22. for(int i=1;i<=n;i++) cin>>a[i].v>>a[i].b;
  23. sort(a+1,a+n+1,my_comp);
  24. for(int i=1;i<=n;i++)
  25. {
  26. if(a[i].v>=c)
  27. {
  28. sum+=a[i].b;
  29. fang++;
  30. }
  31. }
  32. }
  33. int main()
  34. {
  35. freopen("allow.in","r",stdin);
  36. freopen("allow.out","w",stdout);
  37. init();
  38. while(sheng<=0)
  39. {
  40. sheng=c;
  41. for(int i=fang+1;i<=n;i++)
  42. {
  43. while(sheng-a[i].v>=0&&a[i].b>0)
  44. {
  45. sheng-=a[i].v;
  46. a[i].b--;
  47. }
  48. }//跳出循环时钱数>=c;
  49. for(int i=n;i>=fang+1;i--)
  50. {
  51. while(sheng>0&&a[i].b>0)
  52. {
  53. sheng-=a[i].v;
  54. a[i].b--;
  55. }
  56. }//再用小面额填充剩下的空;
  57. if(sheng<=0)
  58. sum++;
  59. }
  60. cout<<sum;
  61. return 0;
  62. }