ZOJ 3765 splay
B - Lights
Time Limit:8000MS
Memory Limit:131072KB
64bit IO Format:%lld
& %llu
Submit Status
Description
Now you have N lights in a line. Don't worry - the lights don't have color. The only status they have is on and off. And, each light has a value, too.
There is a boring student in ZJU. He decides to do some boring operations to the lights:
Q
L R status - Query the GCD (Greatest Common Divisor) of the value of the given status lights in range [
L,
R]. For example, if now we have 3 lights which are {on, off and on}, and their value are {3, 5, 9}, then the GCD
of the number of the lights on in [1, 3] is 3, and the lights off is 5.I
i value status - Add a light just behind to
ith light. The initial status and the value is given also.D
i - Remove the
ith light.R
i - If
ith light is on, turn it off, else turn it on.M
i x - Modify the value of
ith light to
x.
Please help this boring guy to do this boring thing so that he can have time to find a girlfriend!
Input
The input contains multiple test cases. Notice there's no empty line between each test case.
For each test case, the first line of the a case contains two integers, N (1 ≤ N ≤ 200000) and Q (1 ≤ Q ≤ 100000), indicating the number of the lights at first and the number of the operations. In following N lines,
each line contains two integers, Numi (1 ≤ Numi ≤ 1000000000) and Statusi (0 ≤ Statusi ≤ 1), indicating the number of the light i and the status of it. In following Q lines,
each line indicating an operation, and the format is described above.
It is guaranteed that the range of the operations will be appropriate. For example, if there is only 10 lights, you will not receive an operation like "Q 1 11 0" or "D 11".
Output
For each Query operation, output an integer, which is the answer to the query. If no lights are with such status, please output -1.
Sample Input
3 12
27 1
32 0
9 1
Q 1 3 1
I 3 64 0
Q 2 4 0
Q 2 4 1
I 2 43 1
D 5
Q 1 2 1
M 1 35
Q 1 2 1
R 1
R 3
Q 1 2 1
Sample Output
9
32
9
27
35
-1
提取區間[L,R],Splay(L-1,0);Splay(R+1,root);[L,R]對應的區間為ch[ch[root][1]][0],維護操作函數放到push_down和push_up裡就好。
/*************************************************************************
> File Name: Spaly.cpp
> Author: acvcla
> QQ:
> Mail: [email protected]
> Created Time: 2014Äê11ÔÂ16ÈÕ ÐÇÆÚÈÕ 00ʱ14·Ö26Ãë
************************************************************************/
#include
#include
#include
#include
#include
#include