【CDOJ 1339】郭大侠与线上游戏
2016-08-01 20:00
218 查看
http://acm.uestc.edu.cn/#/problem/show/1339
#include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #include<set> #include<queue> using namespace std; int n; set<int> l,r; queue<int> q; int main() { scanf("%d",&n); int op = 0,val; while(n--) { scanf("%d",&op); switch(op) { case 1: scanf("%d",&val); q.push(val); if(r.empty()){r.insert(val);} else if(l.empty()) { if(val>*r.begin()) { l.insert(*r.begin()); r.erase(r.begin()); r.insert(val); } else l.insert(val); } else { if(val>=*r.begin()) { if(r.size()==l.size())r.insert(val); else { r.insert(val); l.insert(*r.begin()); r.erase(r.begin()); } } else { if(r.size()==l.size()) { l.insert(val); r.insert(*l.rbegin()); l.erase(--l.end()); } else l.insert(val); } } break; case 2: val = q.front(); q.pop(); if(l.empty())r.erase(r.begin()); else { if(val>=*r.begin()){ if(r.size()==l.size()){ r.erase(r.lower_bound(val)); r.insert(*l.rbegin()); l.erase(--l.end()); } else{ r.erase(r.lower_bound(val)); } } else { if(r.size()==l.size()){ l.erase(l.lower_bound(val)); } else { l.erase(l.lower_bound(val)); l.insert(*r.begin()); r.erase(r.begin()); } } } break; case 3: printf("%d\n",*r.begin()); break; } } return 0; }
相关文章推荐
- set 命令特殊用法
- You must SET PASSWORD before executing this statement的解决方法
- 批处理 Set 命令详解 让你理解set命令第1/2页
- ASP中set与dim的区别(自己的理解)
- 深入C#中get与set的详解
- sql Set IDENTITY_INSERT的用法
- set_include_path在win和linux下的区别
- jquery中常用的SET和GET
- 大家注意vector, list, set, map成员函数erase
- 基于SQL中SET与SELECT赋值的区别详解
- mysql之set与enum的介绍
- php set_magic_quotes_runtime() 函数过时解决方法
- MySQL的FIND_IN_SET函数使用方法分享
- .net get set用法小结第1/3页
- mysqli_set_charset和SET NAMES使用抉择及优劣分析
- asp.net get set用法第1/2页
- Java集合类中文介绍
- Mysql中的find_in_set的使用方法介绍
- 探讨:JavaScript ECAMScript5 新特性之get/set访问器
- PHP使用方法重载实现动态创建属性的get和set方法