第三个点wa,求帮助
查看原帖
第三个点wa,求帮助
473710
hmr26108楼主2021/11/14 16:52
#include<bits/stdc++.h>
#define INf 0x7f7f7f7f 
using namespace std;
set<int > s;
set<int > :: iterator it,it1;
int val,n,x,y,ans,cnt,a,minn;
void check(int x){
	it=s.lower_bound(x);
	if(*it!=-INf){
		it--;
		val=*it;
	}
	it1=s.upper_bound(x);
	if(*it1!=INf){
		if(x-val>*it1-x){
			val=*it1;
		}
	}
	ans+=abs(val-x);
	s.erase(val);
}
int main()
{
	scanf ("%d",&n);
	s.insert(INf),s.insert(-INf);
	for(int i=1;i<=n;i++){
		scanf("%d%d",&a,&y);
		if(s.size()==2){
			cnt =a;
			s.insert(y);
		}
		else if(a== cnt ) s.insert (y);
		else {
			minn =0;
			it=s.lower_bound(y);
			if(*it!=-INf||it!=++s.begin()){
				it--;
				val=*it;
			}
			else {
				minn=*it-y;
			}
			it1=s.upper_bound(y);
			if(*it1!=INf||it1!=--s.end()){
				if(y-val>*it1-y){
					val=*it1;
				}
			}
			else {
				it1--;
				minn=y-*it1;
			}
			ans+=abs(val-y);
			ans%=1000000;
			s.erase(val);
		}
	} 
	cout<<ans%1000000;
	return 0;
}
2021/11/14 16:52
加载中...