時間限制: 3 sec 記憶體限制: 128 mb
提交: 49 解決: 7
輸入乙個數列,你需要進行如下操作:
1、 把編號為i的數值改為k
2、 輸出從小到大排序後第k個數
輸入檔案第一行包含兩個整數n、m,分別表示數列長度與操作個數。
第二行有n個整數,為初始數列中的n個整數。
接下來m行每行如果只有乙個整數k,那麼就是輸出第k小數,否則兩個整數i,k表示把第i個數的數值改為k。
輸出所有要求輸出的數,每個數單獨一行。
5 35 3 2 1 1
42 643
5n,m≤200,000
數列中所有數字的絕對值不大於100,000,000
#include#include#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn=200001
;int
n,m;
struct
node
bst[maxn],*root;
node *pos=bst;
queue
mem;
void update(node* &r)
void rotate(node* &r,int
b)void newnode(node* &r,int
key)
void insert(node* &r,int
key)
update(r);
}void delet(node* &r,int
key)
else
}else
update(r);
}int
end,len;
int read(char s,int
begin)
if(begin==i)return
2000000000
; end=i+1
;
return ans*f;
}int find(node* &r,int
x)
else
return
2000000000;}
inta[maxn];
intmain()
char s[101
]; getchar();
for(i=1;i<=m;i++)
else
}return0;
}
Splay指標版詳解
經過一天re的洗禮,終於把指標版 mathrm 趕出來了,淚目 看了一圈,居然沒有找到 mathrm 的指標版題解,氣抖冷,指標黨什麼時候才能站起來!先放上自己的部落格 雖然都是平衡樹,但是 mathrm 和 mathrm 是不一樣的 mathrm 維持平衡的條件是每個節點隨機賦予的優先順序,但 m...
uva 11922 splay維護數列
splay第一題,有了treap的基礎以後感覺splay還是比較好理解的,splay的優勢在於程式設計複雜度比較低且效率不錯,通過splay操作以及衍生的split和merge操作可以實現很強大的功能。1 include 2 include 3 include 4 using namespace s...
NOI2005 維護數列 splay
請寫乙個程式,要求維護乙個數列,支援以下6種操作 請注意,格式欄中的下劃線 表示實際輸入檔案中的空格 1.插入 insert posi tot c1 c2 ctot 在當前數列的第posi個數字後插入tot個數字 c1,c2,ctot 若在數列首插入,則posi為0 2.刪除 delete posi...