记录编号 141362 评测结果 AAAAAAAAAA
题目名称 [HNOI 2002]营业额统计 最终得分 100
用户昵称 GravatarHouJikan 是否通过 通过
代码语言 C++ 运行时间 0.096 s
提交时间 2014-11-30 22:39:50 内存使用 0.31 MiB
显示代码纯文本
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <cmath>
  4. #include <algorithm>
  5. #include <cstring>
  6. #include <cstdlib>
  7. #include <set>
  8. #include <iterator>
  9. using namespace std;
  10. const int INF=0x7fffffff;
  11. int n,sale;
  12. int ans=0;
  13. multiset <int> TurnOver;
  14. multiset<int>::iterator it,it1,it2;
  15. int main()
  16. {
  17. #define FILE__
  18. #ifdef FILE__
  19. freopen("turnover.in","r",stdin);
  20. freopen("turnover.out","w",stdout);
  21. #endif
  22. scanf("%d",&n);
  23. scanf("%d",&sale);
  24. ans+=sale;
  25. TurnOver.insert(sale);
  26. for(int i=2;i<=n;i++){
  27. if (scanf("%d",&sale)==EOF)
  28. sale=0;
  29. it=TurnOver.lower_bound(sale);
  30. int minn=INF;
  31. if (abs((*it)-sale)<minn)
  32. minn=abs((*it)-sale);
  33. if (it!=TurnOver.begin()){
  34. it--;
  35. minn=min(minn,abs((*it)-sale));
  36. }
  37. ++it;
  38. if (it!=--TurnOver.end()){
  39. ++it;
  40. minn=min(minn,abs((*it)-sale));
  41. }
  42. ans+=minn;
  43. TurnOver.insert(sale);
  44. //printf("day %d:%d\n",i,minn);
  45. }
  46. printf("%d\n",ans);
  47. }