Klasiskās mediānas

4
Latvijas Informātikas olimpiādes logo

Uzdevums no 2026. g. LIO atlases kārtas; abām grupām.

Stāsts

Matemātiķis Krišjānis jau labu laiku aplūko īpaši skaistu matemātisku jēdzienu - mediāna. Mediānu patvaļīgā skaitļu virknē aprēķina šādi:

  • Vispirms sakārto virknes elementus augošā secībā un tad:
    • ja elementu skaits ir nepāra skaitlis, tad mediāna ir skaitļu virknes vidējais elements.
    • ja elementu skaits ir pāra skaitlis, tad mediāna ir divu vidējo elementu vidējā vērtība (vidējos elementus saskaita un summu izdala ar 2).

Reiz šis jēdziens lika Krišjānim apsēsties un pārdomāt, kā mediānas varētu visefektīvāk pielietot. Viņš vispirms uz lapas uzrakstīja NN veselus skaitļus a1,a2,…,aNa_1, a_2, \ldots, a_N. Tālāk viņš izdomāja apstrādāt šos skaitļus ar VV šāda veida vaicājumiem:

  • A tipa vaicājumi - dots indekss ii un skaitlis xx. Ir jānodzēš skaitlis pozīcijā ii un tajā pašā vietā jāieraksta skaitlis xx.

  • B tipa vaicājumi - doti indeksi ll un rr. Nepieciešams noskaidrot, kāda ir skaitļu virknes al,…,ara_l, \ldots, a_r mediāna. Krišjāņa kalkulatoram ir salūzusi dalīšanas poga, tāpēc vaicājumos būs tikai tādi ll un rr, ka (r−l+1)(r - l + 1) ir nepāra skaitlis.

Ātri vien Krišjānis saprata, ka šādas darbības veikt uz papīra ir lēni un neefektīvi, tāpēc uzrakstiet datorprogrammu, kas dotām N,VN, V un a1,a2…aNa_1, a_2 \ldots a_N vērtībām atrod atbildes uz visiem vaicājumiem!

Ievaddati

Pirmajā rindā doti divi naturāli skaitļi - elementu skaits virknē NN un vaicājumu skaits VV (1≤N,V≤2⋅105)(1 \leq N, V \leq 2 \cdot 10^5). Nākamajā rindā ir doti NN skaitļi - a1,a2,…,aNa_1, a_2, \ldots, a_N (1≤ai≤109)(1 \leq a_i \leq 10^9). Nākamajās VV rindās ir doti vaicājumi. Vaicājuma rindas sākumā ir dots burts t∈{A,B}t \in \{A, B\} - vaicājuma tips, aiz kura seko tukšumsimbols. Aiz tukšumsimbola:

  • Ja t=At = A, tad šajā rindā sekos divi skaitļi ii (1≤i≤N)(1 \leq i \leq N) un xx (1≤x≤109)(1 \leq x \leq 10^9). Tas nozīmē, ka skaitlis pozīcijā ii ir jānomaina ar skaitli xx.
  • Ja t=Bt = B, tad šajā rindā sekos divi skaitļi ll un rr (1≤l≤r≤N)(1 \leq l \leq r \leq N). Tas nozīmē, ka ir nepieciešams atrast skaitļu al,al+1,…,ara_l, a_{l + 1}, \ldots, a_r mediānu. Ir garantēts, ka (r−l+1)(r - l + 1) ir nepāra skaitlis.

Zināms, ka ievaddatos būs vismaz viens BB tipa vaicājums.

Izvaddati

Izvaddatu rindu skaitam jāsakrīt ar BB tipa vaicājumu skaitu ievaddatos. Izvaddatu ii-tajā rindā jāizvada atbilde uz pēc kārtas ii-to BB tipa vaicājumu.

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

Uzdevuma tekstā dotais tests

2
2.

N,V≤1000N, V \leq 1000

8
3.

N,V≤10000N, V \leq 10000

10
4.

l=1,r=Nl=1, r=N

10
5.

Ievaddatos nav A tipa vaicājumu

40
6.

N,V≤100000N, V \leq 100000

20
7.

Bez papildu ierobežojumiem

10
Apakšuzdevumu punktu summa = 100.

Piemērs

Ievaddati

5 12 1 6 3 2 3 A 1 1 B 3 3 A 2 2 B 3 3 A 5 2 B 1 5 A 5 5 B 4 4 A 2 1 B 1 3 A 2 4 B 2 4 Kopēt kodu

Izvaddati

3 3 2 2 1 3 Kopēt kodu

1. apakšuzdevuma ievaddati

5 10 80 71 63 51 37 A 1 100 B 3 3 A 1 24 B 3 3 A 3 99 B 2 4 A 4 21 B 3 5 A 5 44 B 4 4 Kopēt kodu