码迷,mamicode.com
首页 > 其他好文 > 详细

4543 普通平衡树[未完结]

时间:2016-08-22 21:46:38      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

4543 普通平衡树

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 大师 Master
 
 
 
题目描述 Description

这是一道模板题。

如果觉得这个题水的可以做一下4544压行,是千古神犇花爸爸出的神犇题。

您需要写一种数据结构(可参考题目标题,但是这句话其实并没有什么用233),来维护一些数,其中需要提供以下操作:
1. 插入x数
2. 删除x数(若有多个相同的数,因只删除一个)
3. 查询x数的排名(若有多个相同的数,因输出最小的排名)
4. 查询排名为x的数
5. 求x的前驱(前驱定义为小于x,且最大的数)
6. 求x的后继(后继定义为大于x,且最小的数)

输入描述 Input Description

第一行为n,表示操作的个数,下面n行每行有两个数opt和x,opt表示操作的序号(1<=opt<=6)

输出描述 Output Description

对于操作3,4,5,6每行输出一个数,表示对应答案

样例输入 Sample Input

10

1 10

1 10

1 10

1 10

1 10

1 10

1 10

1 10

1 10

1 10

样例输出 Sample Output

EOF(无输出)

数据范围及提示 Data Size & Hint

n=100000 所有数字均在-2*10^9到2*10^9内

其实n=5000000才对。。。但是为了不卡评测机

分类标签 Tags 点此展开 

 
暂无标签
//未完结
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
set<int>s;
set<int>::iterator it;
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1,t,opt,x;i<=n;i++){
        scanf("%d%d",&opt,&x);
        t=0;
        if(opt==1){
            s.insert(x);
        }
        else if(opt==2){
            s.erase(x);
        }
        else if(opt==3){
            for(it=s.begin();it!=s.end();it++){
                //此处省略 
            }
        }
        else if(opt==4){
            for(it=s.begin();it!=s.end();it++){
                if(++t==x){
                    printf("%d\n",*it);
                    break;
                }
            }
        }
        else if(opt==5){
            //此处省略 
        }
        else if(opt==6){
            //此处省略 
        }
    } 
    return 0;
}

 

4543 普通平衡树[未完结]

标签:

原文地址:http://www.cnblogs.com/shenben/p/5796956.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!