How to solve this problem
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3831 |
3 | Radewoosh | 3646 |
4 | jqdai0815 | 3620 |
4 | Benq | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | gamegame | 3386 |
10 | ksun48 | 3373 |
# | User | Contrib. |
---|---|---|
1 | cry | 164 |
1 | maomao90 | 164 |
3 | Um_nik | 163 |
4 | atcoder_official | 160 |
5 | -is-this-fft- | 158 |
6 | awoo | 157 |
7 | adamant | 156 |
8 | TheScrasse | 154 |
8 | nor | 154 |
10 | Dominater069 | 153 |
Name |
---|
Maybe you can use treap in segment tree?
Here's one (maybe not an optimal) solution:
Let's imagine first that we have no update queries. Then the problem can be easily solved using SQRT-decomposition of queries (I think that's how it's
done in the PewDiePie towncalled in English) and a map/unordered_map.The solution is practically the same as the one described in this blog and has time asymptotic.
Now we need to handle update queries. Assume . Let's store update queries in an auxillary array in the sorted (by position) order. Now the idea is practically the same as above. We handle question queries as if there were no update but after we've inserted current segment in our DS we have to perform all necessary updates (there'll be no more than of them) in a straightforward way.
Of course, there's no such strange constraint as . But we can create it: just split all Q queries into blocks of and after we've handled a block we perform all updates from this block with our original array.
I hope it's right.
is this correct, Did it work??