记录编号 141362 评测结果 AAAAAAAAAA
题目名称 [HNOI 2002]营业额统计 最终得分 100
用户昵称 GravatarHouJikan 是否通过 通过
代码语言 C++ 运行时间 0.096 s
提交时间 2014-11-30 22:39:50 内存使用 0.31 MiB
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <set>
#include <iterator>
using namespace std;
const int INF=0x7fffffff;
int n,sale;
int ans=0;
multiset <int> TurnOver;
multiset<int>::iterator it,it1,it2;
int main()
{
#define FILE__
#ifdef FILE__
   freopen("turnover.in","r",stdin);
   freopen("turnover.out","w",stdout);
 #endif
   scanf("%d",&n);
   scanf("%d",&sale);
   ans+=sale;
   TurnOver.insert(sale);
   for(int i=2;i<=n;i++){
     if (scanf("%d",&sale)==EOF) 
       sale=0;
     it=TurnOver.lower_bound(sale);
	 int minn=INF;
	 if (abs((*it)-sale)<minn)
	   minn=abs((*it)-sale);
	 if (it!=TurnOver.begin()){
	   it--;
	   minn=min(minn,abs((*it)-sale));
	 }
	 ++it;
	 if (it!=--TurnOver.end()){
	   ++it;
	   minn=min(minn,abs((*it)-sale));
	 }
	 ans+=minn;
	 TurnOver.insert(sale);
	 //printf("day %d:%d\n",i,minn);
   }
   printf("%d\n",ans);
}