1 条题解
-
1Glory_Vatican LV 8 @ 2018-10-15 22:36:59
/*
既然没有题解,我就写一份。
代码很烂,但是方法很蛇皮,欢迎大家参考。
*/#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>using namespace std;
const long long int INF=2147483646;
int N;
long long int sum;
long long int x,y;
int t1,t2;set<int>s1;
set<int>s2;int main()
{
set<int>::iterator it1,it2;
cin>>N;
for(int i=1;i<=N;i++)
{
cin>>x>>y;
if(x==0)
{
if(s2.empty())
{
s1.insert(y);
continue;
}
s2.insert(y);
it1=s2.find(y);
if(it1==s2.begin())
t1=INF;
else
{
it1--;
t1=abs(y-*it1);
}
it2=s2.find(y);
it2++;
if(it2==s2.end())
t2=INF;
else
t2=abs(y-*it2);
if(t1<=t2)
{
s2.erase(y);
s2.erase(*it1);
sum+=t1;
sum%=1000000;
}
if(t1>t2)
{
s2.erase(y);
s2.erase(*it2);
sum+=t2;
sum%=1000000;
}
}
if(x==1)
{
if(s1.empty())
{
s2.insert(y);
continue;
}
s1.insert(y);
it1=s1.find(y);
if(it1==s1.begin())
t1=INF;
else
{
it1--;
t1=abs(y-*it1);
}
it2=s1.find(y);
it2++;
if(it2==s1.end())
t2=INF;
else
t2=abs(y-*it2);
if(t1<=t2)
{
s1.erase(y);
s1.erase(*it1);
sum+=t1;
sum%=1000000;
}
if(t1>t2)
{
s1.erase(y);
s1.erase(*it2);
sum+=t2;
sum%=1000000;
}
}
}
cout<<sum<<endl;
return 0;
}
- 1
信息
- 难度
- 8
- 分类
- (无)
- 标签
- 递交数
- 115
- 已通过
- 15
- 通过率
- 13%
- 上传者