Universal Cup Judging System

Universal Cup

Límite de tiempo: 1 s Límite de memoria: 1024 MB
Estadísticas

Rata-rata dari rata-rata tidak selalu sama dengan rata-rata.

VegiCat baru saja mempelajari segment tree dan ingin berlatih menggunakannya.

Untuk suatu bilangan bulat positif $n$, ia meninjau barisan $a_i = i$ ($1 \le i \le n$). Ia memutuskan untuk membangun sebuah segment tree guna menjawab kueri rata-rata rentang pada barisan ini.

Dalam segment tree milik VegiCat, setiap simpul bersesuaian dengan suatu interval $[l, r]$ dan menyimpan sebuah nilai $v_{l,r}$, yang dimaksudkan VegiCat untuk menyatakan rata-rata pada interval tersebut. Akar bersesuaian dengan keseluruhan interval $[1, n]$.

problem_23592_1a491bf2ea3d5c638f75cb749b35c44a.png

Namun, VegiCat secara keliru mengasumsikan bahwa rata-rata interval induk selalu sama dengan rata-rata dari nilai yang disimpan pada kedua simpul anaknya. Oleh karena itu, ia menjumlahkan nilai yang disimpan pada kedua simpul anak lalu membagi jumlahnya dengan $2$.

VegiCat pertama-tama membangun segment tree dengan memanggil $\text{Build}(1, n)$. Setelah segment tree selesai dibangun, ia menjawab kueri untuk interval $[L, R]$ dengan memanggil $\text{Query}(1, n, L, R)$. Kedua prosedur rekursif tersebut diberikan pada Algoritma 1.

Algoritma 1 Build dan Query

$$ \begin{array}{rl} 1: & \textbf{procedure } \text{Build}(l, r) \\ 2: & \quad \textbf{if } l = r \textbf{ then} \\ 3: & \quad \quad v_{l,l} \leftarrow a_l \\ 4: & \quad \quad \textbf{return} \\ 5: & \quad \textbf{end if} \\ 6: & \quad m \leftarrow \left\lfloor \dfrac{l + r}{2} \right\rfloor \\ 7: & \quad \text{Build}(l, m) \\ 8: & \quad \text{Build}(m + 1, r) \\ 9: & \quad v_{l,r} \leftarrow \dfrac{v_{l,m} + v_{m+1,r}}{2} \\ 10: & \textbf{end procedure} \\[6pt] 11: & \textbf{procedure } \text{Query}(l, r, L, R) \\ 12: & \quad \textbf{if } L \le l \textbf{ and } r \le R \textbf{ then} \\ 13: & \quad \quad \textbf{return } v_{l,r} \\ 14: & \quad \textbf{end if} \\ 15: & \quad m \leftarrow \left\lfloor \dfrac{l + r}{2} \right\rfloor \\ 16: & \quad \textbf{if } R \le m \textbf{ then} \\ 17: & \quad \quad \textbf{return } \text{Query}(l, m, L, R) \\ 18: & \quad \textbf{else if } L > m \textbf{ then} \\ 19: & \quad \quad \textbf{return } \text{Query}(m + 1, r, L, R) \\ 20: & \quad \textbf{end if} \\ 21: & \quad x \leftarrow \text{Query}(l, m, L, R) \\ 22: & \quad y \leftarrow \text{Query}(m + 1, r, L, R) \\ 23: & \quad \textbf{return } \dfrac{x + y}{2} \\ 24: & \textbf{end procedure} \end{array} $$

Meskipun algoritma VegiCat secara umum tidak tepat, algoritma tersebut mengembalikan rata-rata yang benar untuk beberapa interval. Hitunglah banyaknya interval semacam itu.

Untuk suatu interval $[L, R]$, rata-rata sebenarnya adalah

$$ \frac{\sum_{i=L}^{R} a_i}{R - L + 1}. $$

Lebih tepatnya, hitunglah banyaknya pasangan $(L, R)$ yang memenuhi $1 \le L \le R \le n$ sedemikian sehingga

$$ \text{Query}(1, n, L, R) = \frac{\sum_{i=L}^{R} a_i}{R - L + 1}. $$

Semua rata-rata dihitung sebagai bilangan rasional eksak, tanpa pembulatan ataupun pemotongan.

Masukan

Baris pertama berisi sebuah bilangan bulat $T$ ($1 \le T \le 10^4$), yang menyatakan banyaknya kasus uji. Deskripsi dari masing-masing kasus uji menyusul di bawahnya.

Masing-masing dari $T$ baris berikutnya berisi satu bilangan bulat $n$ ($1 \le n \le 10^6$), yaitu panjang barisan.

Dijamin bahwa jumlah $n$ di seluruh kasus uji tidak melebihi $2 \cdot 10^6$.

Keluaran

Untuk setiap kasus uji, keluarkan sebuah bilangan bulat — banyaknya interval $[L, R]$ yang membuat prosedur kueri VegiCat mengembalikan tepat rata-rata sebenarnya.

Contoh

Masukan 1

3
1
5
14

Keluaran 1

1
10
35

Catatan

Untuk kasus uji kedua, $n = 5$, terdapat $10$ interval yang valid:

$$ \begin{aligned} &[1, 1],\ [1, 2],\ [2, 2],\ [2, 3],\ [2, 5], \\ &[3, 3],\ [3, 4],\ [4, 4],\ [4, 5],\ [5, 5]. \end{aligned} $$

Sebagai contoh, melakukan kueri pada $[2, 5]$ mengembalikan

$$ \frac{\frac{2+3}{2} + \frac{4+5}{2}}{2} = \frac{7}{2}, $$

yang sama dengan rata-rata sebenarnya dari $2, 3, 4, 5$. Dengan demikian, $[2, 5]$ ikut dihitung.

Sebaliknya, melakukan kueri pada $[1, 5]$ mengembalikan

$$ \frac{\frac{\frac{1+2}{2}+3}{2} + \frac{4+5}{2}}{2} = \frac{27}{8}, $$

sedangkan rata-rata sebenarnya adalah $3$. Dengan demikian, $[1, 5]$ tidak ikut dihitung.

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.