Universal Cup Judging System

Universal Cup

Time Limit: 2.0 s Memory Limit: 1024 MB Total points: 100
Statistics

Spekulasi di pasar real estat adalah pekerjaan penuh tekanan dengan penghasilan yang tidak stabil. Apakah akan membantu jika Anda mendapatkan pinjaman besar dari orang tua Anda dan dapat memprediksi harga apartemen secara tepat pada hari-hari tertentu?

Anda mulai tanpa apartemen, tetapi saldo bank Anda adalah $10^{100}$. Karena Anda tidak memiliki lisensi agen real estat, Anda hanya boleh memiliki paling banyak satu apartemen pada satu waktu. Anda sudah mengincar sebuah apartemen tertentu di lokasi yang bagus, dan itulah apartemen yang dapat Anda beli lalu jual, mungkin berkali-kali.

Portal industri MyHouse telah menerbitkan interval prediksi $[a_i, b_i]$ (dengan $a_i < b_i$) dari harga apartemen untuk $n$ hari ke depan. Harga apartemen pada hari ke-$i$ adalah bilangan real acak $c_i$ yang dipilih secara acak seragam dari interval $[a_i, b_i]$. Secara bawaan, Anda mengetahui harga $c_i$ pada awal hari ke-$i$. Anda kemudian harus memutuskan apakah akan melakukan transaksi. Jika Anda memiliki apartemen tersebut, Anda dapat menjualnya seharga $c_i$, dan jika Anda tidak memilikinya, Anda dapat membelinya seharga $c_i$.

Hanya hari ini (sebelum hari pertama) portal MyHouse mengizinkan pengguna baru untuk mengetahui harga pasti $c_i$ untuk suatu himpunan $k$ hari yang dipilih. Artinya, Anda sekarang memilih himpunan $k$ hari dan mengetahui harganya, sedangkan untuk masing-masing dari $n - k$ hari sisanya Anda akan mengetahui harganya pada awal hari tersebut.

Setelah $n$ hari Anda harus berakhir tanpa apartemen; keuntungan Anda adalah selisih antara saldo bank akhir dan awal Anda. Tentukan nilai ekspektasi* maksimum dari keuntungan tersebut, jika Anda memilih himpunan $k$ hari secara optimal dan kemudian membuat keputusan transaksi secara optimal pada masing-masing dari $n$ hari.

*Nilai ekspektasi adalah nilai rata-rata, dibobot dengan probabilitas, dari suatu variabel acak. Secara intuitif, ini adalah hasil yang Anda harapkan secara rata-rata ketika mengulangi percobaan acak berkali-kali.

Masukan

Baris pertama berisi dua bilangan bulat $n$ dan $k$ ($0 \le k \le n \le 300\,000$; $1 \le n$), yang masing-masing menyatakan jumlah hari dan jumlah harga yang dapat Anda ketahui secara langsung.

$n$ baris berikutnya mendeskripsikan interval harga; baris ke-$i$ berisi dua bilangan bulat $a_i$ dan $b_i$ ($1 \le a_i < b_i \le 10^6$).

Keluaran

Cetak satu bilangan real – nilai ekspektasi maksimum yang mungkin dari keuntungan setelah $n$ hari.

Galat relatif atau absolut yang dapat diterima adalah $10^{-6}$. Artinya, jika Anda mencetak $x$ dan hasil eksak yang benar adalah $y$, maka harus berlaku $|x - y| \le 10^{-6} \cdot \max(1, y)$. Anda dapat mencetak hingga $20$ digit di belakang koma.

Contoh

input

4 0
10 30
10 30
40 50
30 60

output

28.75

input

4 1
10 30
10 30
40 50
30 60

output

31.3888888889

input

6 3
10 50
30 70
50 70
30 50
30 40
10 40

output

33.6805555556

Catatan

Pada uji pertama kita memiliki $k = 0$, sehingga setiap harga diketahui pada awal harinya. Terdapat strategi optimal yaitu membeli apartemen pada hari ke-$1$ atau ke-$2$ dengan ekspektasi biaya $17.5$, lalu menjualnya pada hari ke-$3$ atau ke-$4$ dengan ekspektasi pendapatan $46.25$. Ekspektasi keuntungannya adalah $46.25 - 17.5 = 28.75$.

Pada uji kedua kita memiliki $k = 1$ dan kita sebaiknya secara optimal memilih hari ke-$4$, sehingga kita langsung mengetahui sebuah bilangan real $c_4$ dari interval $[30, 60]$. Ekspektasi keuntungannya adalah $31\frac{7}{18}$ untuk keputusan transaksi yang optimal.

Pada uji ketiga pilihan optimal untuk himpunan $k$ hari adalah $\{2, 3, 6\}$. Kita langsung mengetahui harga $c_2$, $c_3$, dan $c_6$.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.