求助 60PTS STL做法
查看原帖
求助 60PTS STL做法
142066
秀……虚空楼主2023/10/16 21:17
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	set<int> s;
	set<int>::iterator it;
	cin>>n;
	int sum=0;
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		if(i==1){
			s.insert(x);
			sum+=x;
			//cout<<sum<<endl;
			continue;
		}
		if(i==2){
			sum+=abs(*s.begin()-x);
			s.insert(x);
			continue;
		}
		it=s.lower_bound(x);
		if(it==s.end()){
			it--;
			sum+=x-*it;
			//cout<<sum<<' '<<1<<endl;
			s.insert(x);
			continue;
		}
		int f1=*it;
		//cout<<f1<<' ';
		if(f1==x){
			s.insert(x);
			continue;
		}
		else {
			it--;
			int f2=*it;
			//cout<<f2<<' ';
			sum+=min(abs(x-f2),abs(x-f1));
			s.insert(x);
			//cout<<sum<<endl;
		}
	}
	cout<<sum;
	return 0; 
}

60pts 求调

2023/10/16 21:17
加载中...