Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2008-04-02 21:23:03.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:aib.in, aib.outSursăad-hoc
AutorArhiva EducationalaAdăugată decos_minBondane Cosmin cos_min
Timp execuţie pe test0.175 secLimită de memorie5120 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Arbori indexati binar

Se da un vector A cu N elemente naturale. Asupra lui se vor face M operatii, codificate astfel in fisierul de intrare:
• 0 a b - Valorii elementului de pe pozitia a ii se va adauga valoarea b.
• 1 a b - Sa se determine suma valorilor elementelor intervalului [a,b].
• 2 a - Sa se determine pozitia minima k astfel incat suma valorilor primilor k-termeni sa fie exact a.

Date de intrare

Pe prima linie a fisierului de intrare se afla N si M. Pe urmatoarea linie se gasesc cele N elemente ale vectorului, iar urmatoarele M linii descriu operatia care trebuie efectuata.

Date de iesire

Pentru fiecare operatie de tip 1, se va afisa pe cate o linie suma valorilor elementelor pentru intervalul cerut (in ordinea ceruta in fisierul de intrare), iar pentru fiecare operatie de tip 2 se va afisa pozitia k ceruta pentru acest tip, daca nu exista se va afisa -1.

Restrictii

  • 1N, M50 000
  • 1Ai10 000 pentru 1 ≤ i ≤ N
  • Pentru operatia de tip 0: 1aN si 1b10 000
  • Pentru operatia de tip 1: 1abN
  • Pentru operatia de tip 2: 1a231
  • Rezultatul se va incadra pe 32 de biti

Exemplu

aib.inaib.out
6 5
6 3 6 3 7 8
0 1 6
1 3 5
0 3 5
1 1 1
0 1 4
33
21
24

Solutie

O rezolvare brute a problemei ar obtine in jur de 30 puncte si o poti gasi aici.

O alta solutie este una care are pentru operatiile de tip 0 si 1, complexitatea O(logN), iar pentru operatia de tip 2, complexitatea O(log2N) folosind o cautare binara. Aceasta solutie poate fi realizata prin intermediul arborilor indexati binar. Detalii privind aceasta solutie gasesti aici.

Solutia optima are complexitatea O(logN) pentru fiecare operatie si se realizeaza tot prin intermediul arborilor indexati binar, folosindu-ne de structura acestora. Mai multe detalii privind implementare gasesti aici.

Probleme similare

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?