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%
- 上传者