营业额统计
这题思维难度不高,只需要找前驱后继,比一下就OK了
我想自己写平衡树实现,但是试了好几遍都错了
老实了,还是用multiset吧
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin>>t;
multiset<int>num;
long long count=0;
for(int i=0;i<t;i++){
int x;
cin>>x;
if(i==0){
count+=x;
}
else{
auto it=num.lower_bound(x);
int temp=INT_MAX;
if(it!=num.end()){
temp=min(temp,*it-x);
}
if(it!=num.begin()){
it--;
temp=min(temp,x-*it);
}
count+=temp;
}
num.insert(x);
}
cout<<count;
}
时间复杂度:O(t log t)
空间复杂度:O(t)
OPPO公司福利 1222人发布
