RE求助!!
查看原帖
RE求助!!
271491
koreyoshi_lemon楼主2022/8/3 15:55
#include <bits/stdc++.h>
using namespace std;
int n,ans;
set<int>p,q;
inline int dis(int x,int y){return abs(x-y);}
int main(void)
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)	{
		int opt,x;
		scanf("%d%d",&opt,&x);
		if(opt==0) p.insert(x);
		if(opt==1) q.insert(x);
		if(q.empty()||p.empty()) continue;
		if(p.size()>=q.size())	{
			int x=*(q.begin());
			set<int>::iterator it=p.lower_bound(x);
			if(it!=p.begin()&&dis(x,*it)<dis(x,*(--it))) ++it;
			ans+=dis(x,*it);
			p.erase(it),q.erase(q.begin());
		}
		if(p.size()<q.size())	{
			int x=*(p.begin());
			set<int>::iterator it=q.lower_bound(x);
			if(it!=q.begin()&&dis(x,*it)<dis(x,*(--it))) ++it;
			ans+=dis(x,*it);
			q.erase(it),p.erase(q.begin());
		}
	}
	printf("%d\n",ans);
	return 0;
}
2022/8/3 15:55
加载中...