10929 - Find the Kth number   

Description

給定N個排序好的序列,每個序列內有M個數字。因此我們總共有N*M個數字,編號為1~N*M。

將N*M個數字排序後輸出第K個數字是多少。

 

Hint : 直接將N*M個數字做排序會超過時間限制。

Hint : 每次花O(N)的時間找一個數字,一直找到第K個數字也會超過時間限制。

 

Hint : 使用一個大小為N的heap,記錄每個序列目前最小的數字是多少,以及這是該序列的第幾個數字。

Hint : 不要將N*M個數字都產生出來,會超過memory限制。

Input

只有一筆測資。

    第一行有三個數字N M K,意義如題目所述。

    接下來的N行,每行有2個數字a b,代表一個f(x) = ax+b。這一行的序列即為[f(1), f(2), … , f(M)]。你可以假設每一行的f(x)都會是一個遞增函數,使得你的序列肯定是排序好的序列(由小到大)。

 

數字範圍:

0 < N <= 17000

0 < M <= 10000

0 < K <= 1000000

 

0 <= a,b <= 100

Output

輸出一行數字,第K個數字是多少。

Sample Input  Download

Sample Output  Download

Tags

韩永楷老师数据结构mooc MOOC



Discuss