Cerință
Se dă un vector cu numere naturale. Avem mai multe operații de două feluri:
- Update: Elementul de pe o anumită poziție primește o valoare dată .
- Query: Dați fiind doi indici și să se determine lungimea subșirului crescător de lungime maximă pentru secvența care începe la poziția și se termină la poziția .
Date de intrare
Pe prima linie a fișierului qscmax.in
se află numărul de elemente ale șirului dat, notat .
Pe linia a doua se află numere, separate prin spațiu, reprezentând elementele șirului dat, în ordinea pozițiilor, numerotate de la la .
Pe linia a treia se află numărul de operații, notat . Pe fiecare din următoarele linii se află descrierea câte unei operații. Dacă avem update, linia va conține valorile , , . Dacă avem query linia va conține valorile , , .
Date de ieșire
Fișierul de ieșire qscmax.out
va conține, pentru fiecare interogare rezultatul, în ordinea aparițiilor din fișierul de intrare. Valorile se scriu pe o linie, separate prin spațiu.
Restricții și precizări
- ;
- În orice moment, valorile șirului sunt , , sau ;
- ;
- Avem cel puțin o operație “query”;
- ;
- .
Exemplu
qscmax.in
9
0 1 3 0 1 2 1 2 0
3
2 1 9
1 3 0
2 1 3
qscmax.out
5 2
Explicație
La prima interogare se cere lungimea subșirului crescător din tot șirul dat. Aceasta este .
La a doua interogare se cere lungimea subșirului crescător pentru elementele de pe poziții de la la . Aceasta este (elementul de pe poziția a devenit între timp ).