记录编号 |
144133 |
评测结果 |
RRRRRR |
题目名称 |
加法问题 |
最终得分 |
0 |
用户昵称 |
Foenix |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2014-12-20 15:41:35 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
const int MAXN=80005;
int m,a,b;
struct NODE{
int v,s,r;
NODE *ch[2];
void Maintain(){
s=1;
if(ch[0]!=NULL)s+=ch[0]->s;
if(ch[1]!=NULL)s+=ch[1]->s;
}
};
NODE *root;
void rotate(NODE* &root,int d){
NODE* p=root->ch[d^1]; root->ch[d^1]=p->ch[d]; p->ch[d]=root;
p->Maintain(); root->Maintain(); root=p;
}
void Insert(NODE* &root,int x){
if(root==NULL){
root=new NODE(); root->v=x; root->r=rand();
root->s=1; root->ch[0]=root->ch[1]=NULL;
}
else{
int d=(x<root->v? 0:1);
Insert(root->ch[d],x);
if(root->ch[d]->r>root->r)rotate(root,d^1);
}
}
int main(){
scanf("%d",&m);
/*for(int i=1;i<=m;i++){
scanf("%d%d",&a,&b);
if(a==0)Insert(root,b);
else{
int x1=ABS(b-Lower_bound(root,b));
int x2=ABS(b-Upper_bound(root,b));
if(x1<x2)ans=x1,Remove(root,x1);
else ans=x2,Remove(root,x2);
printf("%d\n",ans);
}
}*/
}