水銀メモ_________φ

外部記憶装置として再開

CodeForces #276_Div2 : C. Bits

Problem - C - Codeforces

問題

n回クエリが投げられる。(各クエリはLRからなる)
LR間の整数で、bitの立っている数が最大となるような最小の値を求めよ。

解法

Rの上限が10^{18}と大きいため、LからRへ値を1ずつ増やしながら
範囲内全ての値のbitをカウントする方法では間に合わない。

Lをベースになるべく値が増えないようにbitを立てたいので、Lの右端から順にbitを立てていけばよい。
計算量は O(nlogR)となる。

コード