90分 RE求助
查看原帖
90分 RE求助
398310
hundunqidian楼主2022/11/19 21:41
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
long long n,ans,tt,a;
tree<long long,null_type,less<long long>,rb_tree_tag,tree_order_statistics_node_update> t;
bool p[10010000];
//p用于记录此前有无相等的,若有,则这次为加0,不做处理 
int main(){
	cin>>n;
	cin>>a;
	ans=a;
	p[a]=1;
	t.insert(a);
	t.insert(1e9);  //初始化极大值 
	t.insert(-1e9); //初始化极小值 
	for(int i=2;i<=n;i++){
		cin>>a;
		if(!p[a]){
			tt=t.order_of_key(a);
			ans+=min(abs(*t.find_by_order(tt)-a),abs(*t.find_by_order(tt-1)-a));
			t.insert(a);
			p[a]=1;
		}
	}
	cout<<ans<<endl;
	return 0;
} 
2022/11/19 21:41
加载中...