Nejaukais trijstūris

3
Latvijas Informātikas olimpiādes logo

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

Stāsts

Acīgais arheologs Šņitrāms savos pasaules apceļojumos ir uzgājis senas civilizācijas drupas. Drupās viņš ir atradis lielu kambari ar milzīgu trijstūrveida struktūru tā vidū. Šī struktūra ir sadalīta mazākos trijstūra formas lauciņos - katra lielā trijstūra mala sadalīta NN vienādās daļās un novilkti abām pārējām malām paralēli nogriežņi. Lielajā trijstūrī katrai no trim pusēm (1. attēlā attiecīgi AA, BB un CC) mazie trijstūrīši ir sadalīti pa rindām, kas indeksētas ar skaitļiem no 11 līdz NN, un ii-tajā rindā ir 2i−12i - 1 mazais trijstūrītis (skat. 1. attēlu).

Milzīgā struktūra, N=6
Milzīgā struktūra, N=6

Šņitrāms ir izpētījis kambari un pie sienas atradis senu artefaktu, ar kuru var lielajā trijstūrī pa izvēlētu malu (AA, BB vai CC) šaut gaismas staru kādā no NN rindām. Šaujot staru rindā ii, stars izies cauri visiem šajā rindā esošajiem 2i−12i - 1 mazajiem trijstūrīšiem.

Izrādās, ka katrā no mazajiem trijstūrīšiem dzīvo sena radība - drupu čukstētājs! Katrs drupu čukstētājs var būt vai nu paslēpies vai redzams. Visiem mazajiem trijstūriem, kuriem trāpa artefakta stars, notiek sekojošais:

  • ja trijstūrī dzīvojošais drupu čukstētājs ir paslēpies, tad tas, ziņkāres mākts, atstāj savu slēptuvi un kļūst redzams;
  • ja trijstūrī dzīvojošais drupu čukstētājs ir redzams, tad spožā gaisma to apžilbina un tas paslēpjas.

Lai atvērtu lielās durvis kambara galā, Šņitrāmam ir jāizpilda uz sienas uzrakstītas instrukcijas, kas nosaka, ka artefakta kārtējais stars jāšauj noteiktas trijstūra malas rindā ar indeksu ii. Pēc katras instrukcijas veikšanas Šņitrāmam ir jānosaka, cik drupu čukstētāji šobrīd ir redzami. Viens instrukciju izpildes piemērs un redzamo drupu čukstētāju skaits pēc katras instrukcijas izpildes ir parādīts 2. attēlā.

Instrukciju izpildes piemērs.
Instrukciju izpildes piemērs.

Drupu čukstētājiem šķiet nejauki, ka viņus tik bieži apžilbina, tāpēc lielais trijstūris ir iesaukts par "Nejauko trijstūri".

Uzrakstiet datorprogrammu, kas dotām NN un QQ vērtībām un QQ instrukcijām nosaka redzamo drupu čukstētāju skaitu pēc katras instrukcijas!

Ievaddati

Pirmajā rindā doti divi naturāli skaitļi - rindu skaits katrā malā N(1≤N≤105)N (1 \leq N \leq 10^5) un instrukciju skaits Q(1≤Q≤105)Q (1 \leq Q \leq 10^5). Tad seko QQ rindas, kas katra ir vienas instrukcijas apraksts - trijstūra malas apzīmējošs burts M(M∈{A,B,C})M (M \in \{A, B, C\}) un rindas numurs i(1≤i≤N)i (1 \leq i \leq N).

Starp katriem diviem blakus skaitļiem, kā arī starp burtu un skaitli ievaddatos ir tukšumzīme.

Izvaddati

Izvaddatiem jāsastāv no QQ rindām, kur ii-tajai rindai jāsatur redzamo drupu čukstētāju skaits pēc izpildītām pirmajām ii instrukcijām.

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

Uzdevuma tekstā dotie trīs testi

2
2.

M∈{A}M \in \{A\}

8
3.

N,Q≤2000N, Q \leq 2000

23
4.

M∈{A,B}M \in \{A, B\}

30
5.

Bez papildu ierobežojumiem

37
Apakšuzdevumu punktu summa = 100.

Piemēri

Ievaddati

6 6 C 4 B 4 A 5 B 5 A 4 A 5 Kopēt kodu

Izvaddati

7 10 15 20 19 14 Kopēt kodu

Ievaddati

6 5 C 1 B 5 A 6 A 5 A 4 Kopēt kodu

Izvaddati

1 10 15 20 23 Kopēt kodu

1. apakšuzdevuma ievaddati

5 4 A 2 A 4 B 5 C 1 Kopēt kodu
3 9 A 1 C 2 B 1 A 2 B 3 B 1 C 2 C 1 A 1 Kopēt kodu
9 4 B 8 A 6 C 2 A 7 Kopēt kodu