Căsuțe

Time limit: 0.3s Memory limit: 64MB Input: casute.in Output: casute.out

Există NN căsuțe (pătrățele), așezate în ordine, de la stânga la dreapta, numerotate de la 11 la NN.

În interiorul fiecărei căsuțe putem scrie câte un număr natural. Inițial, în fiecare căsuță scriem același număr 00.

Executăm, în ordine, QQ operații, care pot fi de trei tipuri:

  • Primul tip de operație se codifică prin 1 st dr nr și înseamnă că în fiecare căsuță cu indicii între stst inclusiv și drdr exclusiv ștergem numerele care existau înainte și scriem în locul lor același număr nrnr.
  • Al doilea tip de operație se codifică prin 2 poz și rezultatul operației este numărul aflat în căsuța cu indicele pozpoz.
  • Al treilea tip de operație se codifică prin 3 st dr și rezultatul operației este numărul de apariții al valorii celei mai mari din căsuțele cu indicii între stst inclusiv și drdr exclusiv.

Cerință

Determinați rezultatele tuturor operațiilor de tip 22 sau 33, în ordinea executării acestora.

Date de intrare

Fișierul de intrare casute.in conține pe prima linie două numere naturale NN și QQ separate printr-un spațiu, cu semnificația din enunț. Pe fiecare dintre următoarele QQ linii se află codificările celor QQ operații.

Fiecare linie care codifică o operație începe cu un număr natural, reprezentând tipul operației, care poate fi 11, 22 sau 33 și este urmat de un spațiu.

  • Dacă tipul operației este 11, atunci urmează trei numere naturale separate prin câte un spațiu: stst, drdr și nrnr, cu semnificația din enunț.
  • Dacă tipul operației este 22, atunci urmează un singur număr natural pozpoz, cu semnificația din enunț.
  • Dacă tipul operației este 33, atunci urmează două numere naturale separate printr-un spațiu stst și drdr, cu semnificația din enunț.

Date de ieșire

Fișierul de ieșire casute.out conține, pentru fiecare operație de tip 22 sau 33, în ordinea în care acestea se regăsesc în fișierul de intrare, pe linii separate, câte un număr natural reprezentând rezultatul operației corespunzătoare.

Restricții și precizări

  • Q3 000Q \leq 3 \ 000;
  • N109N \leq 10^9;
  • 1st<drN+11 \leq \text{st} < \text{dr} \leq N+1 pentru orice operație de tipul 11 și 33;
  • 1pozN1 \leq \text{poz} \leq N pentru orice operație de tipul 22;
  • 1nr3 0001 \leq \text{nr} \leq 3 \ 000 pentru orice operație de tipul 11;
  • în tabelul de mai jos, notăm Op={1,2}Op = \{1, 2\} dacă există numai operații de tipul 11 și 22, sau Op={1,2,3}Op = \{1, 2, 3\} dacă există operații de toate tipurile (1, 2 și 3);
  • în tabelul de mai jos, notăm D=1D = 1 dacă oricare dintre valorile stst, drdr și pozpoz apar într-o singură operație, sau D=0D = 0 dacă se pot și repeta.
# Scor Restricții
1 25 N3 000N \leq 3 \ 000, D=0D = 0, Op={1,2}Op = \{1, 2\}
2 25 N3 000N \leq 3 \ 000, D=0D = 0, Op={1,2,3}Op = \{1, 2, 3\}
3 25 N109N \leq 10^9, D=1D = 1, Op={1,2}Op = \{1, 2\}
4 15 N109N \leq 10^9, D=1D = 1, Op={1,2,3}Op = \{1, 2, 3\}
5 10 N109N \leq 10^9, D=0D = 0, Op={1,2,3}Op = \{1, 2, 3\}

Exemplu

casute.in

9 12
1 3 7 4
1 2 4 5
1 6 10 3
2 1
2 2
2 3
2 9
3 1 10
3 5 8
3 1 2
1 1 4 1
2 1

casute.out

0
5
5
3
2
1
1
1

Explicație

Sunt N=9N = 9 căsuțe. Inițial numerele din cele 9 căsuțe sunt:
00 00 00 00 00 00 00 00 00 (scriem 00 pe toate pozițiile)

După prima operație: 11 33 77 44, numerele devin:
00 00 44 44 44 44 00 00 00 (scriem 44 pe pozițiile 33, 44, 55 și 66)

După a doua operație: 11 22 44 55, numerele devin:
00 55 55 44 44 44 00 00 00 (scriem 55 pe pozițiile 22 și 33)

După a treia operație: 11 66 1010 33, numerele devin:
00 55 55 44 44 33 33 33 33 (scriem 33 pe pozițiile 66, 77, 88 și 99)

Rezultatul pentru a patra operație: 22 11 este 00.
Rezultatul pentru a cincea operație: 22 22 este 55.
Rezultatul pentru a șasea operație: 22 33 este 55.
Rezultatul pentru a șaptea operație: 22 99 este 33.
Rezultatul pentru a opta operație: 33 11 1010 este 22, deoarece maximul din toate căsuțele este 55 iar acesta apare de două ori.
Rezultatul pentru a noua operație: 33 55 88 este 11, deoarece maximul din căsuțele cu valorile: 44 33 33 este 44 iar acesta apare o dată.
Rezultatul pentru a zecea operație: 33 11 22 este 11, deoarece maximul din căsuțele cu valorile: 00 este 00 iar acesta apare o dată.

După a unsprezecea operație: 11 11 44 11, numerele devin:
11 11 11 44 44 33 33 33 33 (scriem 1 pe pozițiile 11, 22 și 33)

Rezultatul pentru a doisprezecea operație: 22 11 este 11.

Log in or sign up to be able to send submissions!