AlenaNuna

导航

SET || BZOJ 1588: [HNOI2002]营业额统计 || Luogu P2234 [HNOI2002]营业额统计

题面:P2234 [HNOI2002]营业额统计

题解:随便写写

注意:cmath中abs函数返回的是一个浮点数,在bzoj上会ce

代码:

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<set>
 5 #define abs(a) ((a)>=0?(a):(-a))
 6 #define ll long long
 7 using namespace std;
 8 ll ans,N,x,a,b,c;
 9 set<ll>A;
10 set<ll>::iterator iter;
11 int main(){
12     scanf("%lld",&N);
13     for(int i=1;i<=N;i++){
14         scanf("%lld",&x);
15         iter=A.lower_bound(x);
16         if(i!=1){
17             a=abs(*iter-x);
18             if(iter!=A.begin()){
19                 iter--;
20                 b=abs(x-*iter);
21                 if(a<b)ans+=a;else ans+=b;
22             }
23             else ans+=a;
24         }
25         else ans=x;
26         A.insert(x);
27     }
28     printf("%lld\n",ans);
29     return 0;
30 }

 


By:AlenaNuna

 

posted on 2019-03-20 22:10  AlenaNuna  阅读(115)  评论(0编辑  收藏  举报