记录编号 28497 评测结果 AAAAAAAAAA
题目名称 抗击SARS 最终得分 100
用户昵称 Gravataryuanziyu 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2011-10-14 20:18:20 内存使用 99.45 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. using namespace std;
  5. double x,r,l,v;
  6. double house;
  7. double local,virus[20][650000];
  8. int total=0,Times=1,w[22];
  9. void test()
  10. {
  11. bool temp=false;
  12. for (int i=0;i<w[Times];)
  13. {
  14. if (house-v<virus[Times][i]-r-0.00001&&house>virus[Times][i]-r-0.00001)
  15. temp=true;
  16. if (house-v<virus[Times][i]-r-0.00001&&house>virus[Times][i]+r+0.00001)
  17. temp=true;
  18. if (house-v>virus[Times][i]-r-0.00001&&house<virus[Times][i]+r+0.00001)
  19. temp=true;
  20. if (house-v<virus[Times][i]+r+0.00001&&house>virus[Times][i]+r+0.00001)
  21. temp=true;
  22. i+=1;
  23. }
  24. if (temp)
  25. total++;
  26. }
  27.  
  28. void Deliver()
  29. {
  30. int num=0;
  31. for (int i=0;i<w[Times];i++)
  32. {
  33. virus[Times+1][i*2]=virus[Times][i]-l/2;
  34. virus[Times+1][i*2+1]=virus[Times][i]+l/2;
  35. num++;
  36. }
  37. w[Times+1]=num*2;
  38. Times++;
  39. }
  40.  
  41. int main()
  42. {
  43. freopen("sars.in","r",stdin);
  44. freopen("sars.out","w",stdout);
  45. cin>>x>>r>>l>>v;
  46. house=0;
  47. local=x;
  48. bool yes=false;
  49. if (house>=local-r-0.00001&&house<=local+r+0.00001)
  50. {
  51. yes=true;
  52. }
  53. house+=v;
  54. if (house>=local-r-0.00001&&house<=local+r+0.00001)
  55. {
  56. yes=true;
  57. }
  58. if (yes)
  59. total++;
  60. w[1]=2;
  61. virus[1][0]=local-l;
  62. virus[1][1]=local+l;
  63. while (l>=1)
  64. {
  65. house+=v;
  66. test();
  67. Deliver();
  68. l=l/2;
  69. }
  70. cout<<total<<endl;
  71. return 0;
  72. }