营业额统计

链接

这题思维难度不高,只需要找前驱后继,比一下就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)

全部评论

相关推荐

钱嘛数字而已:辅导员肯定不能同意,不然你出事了,他要承担责任。但是,脚和脑子都长在你自己身上,使用它还需要向辅导员报告么? 辅导员必须按流程拒绝你,然后你拿出成年人的态度,做自己的选择。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务