ip

Time limit: 0.4s Memory limit: 16MB Input: ip.in Output: ip.out

Termenii de iscoditură și primeneală sunt minunate cuvinte arhaice pe care le utiliza și Ștefan cel Mare. Azi, olimpicii noștri utilizează în locul lor cuvinte englezești: query și update.

Ștefan Vodă, după bătălia de la Vaslui, și-a aliniat cei nn oșteni și a dat fiecăruia câte un număr natural nenul a0a_0, a1,an1a_1, \dots a_{n-1}. Având o bună dispoziție după strașnica victorie, voievodul face două tipuri de operații:

  • 11 ii xx (aceasta este primeneala!): oșteanul de la poziția ii primește o nouă valoare (aia_i devine egal cu xx);
  • 22 xx yy dd (aceasta este iscoditura!): câte numere din secvența de oșteni ax,ax+1,aya_x, a_{x+1}, \dots a_y au cel mult dd divizori?

Cerință

Scrieți un program care răspunde corect la toate iscoditurile și veți fi la fel de faimoși ca Ștefan cel Mare!

Date de intrare

Fișierul de intrare ip.in conține pe prima linie numărul natural nn, pe a doua linie numerele a0,a1,an1a_0, a_1, \dots a_{n-1}, separate prin câte un spațiu, iar pe a treia linie numărul natural mm, reprezentând numărul de operații. Pe fiecare dintre următoarele mm linii se află fie o primeneală, dată prin trei numere de forma 11 ii xx, fie o iscoditură, dată prin patru numere 22 xx yy dd.

Date de ieșire

Fișierul de ieșire ip.out conține atâtea linii câte iscodituri sunt. Linia ii conține răspunsul la a ii-a iscoditură.

Restricții și precizări

  • 4n,m122 5004 \leq n, m \leq 122 \ 500;
  • 1ai200 0001 \leq a_i \leq 200 \ 000, pentru orice 0in10 \leq i \leq n - 1;
  • Pentru fiecare primeneală de forma 11 ii xx, 0i<n0 \leq i < n, 1x200 0001 \leq x \leq 200 \ 000;
  • Pentru fiecare iscoditură de forma 22 xx yy dd, 0xy<n0 \leq x \leq y < n, 1d200 0001 \leq d \leq 200 \ 000.
# Punctaj Restricții
1 17 Pentru toate iscoditurile d9d \leq 9
2 17 Toate operațiile sunt de tip iscoditură.
3 13 4n,m1 0004 \leq n, m \leq 1 \ 000
4 53 Fără restricții suplimentare

Exemplu

ip.in

6
12 3 5 10 1 16
4
2 0 5 3
1 4 24
2 2 4 7
2 1 4 1

ip.out

3
2
0

Explicație

Prima iscoditură 22 00 55 33 cere să se determine câte numere din întreg șirul au cel mult 33 divizori.

Răspunsul este 33, aceste numere fiind 33, 55 și 11.

După primeneala 11 44 2424 șirul devine 1212 33 55 1010 2424 1616.

Pentru iscoditura 22 22 44 77, se întreabă câte numere din secvența 55 1010 2424 au cel mult 77 divizori și răspunsul este 22, aceste numere fiind 55 și 1010.

Pentru iscoditura 22 11 44 11, se întreabă câte numere din secvența 33 55 1010 2424 au cel mult un divizor și răspunsul este 00.

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