operatii

Time limit: 1s Memory limit: 64MB Input: operatii.in Output: operatii.out

Pentru o listă de numere naturale vom numi reprezentant al listei numărul care apare de cele mai multe ori în aceasta. În caz de egalitate (adică mai multe valori cu număr maxim de apariții) reprezentantul este suma acestor valori.

Cerință

Se dă o listă inițial vidă cu două tipuri de operații codificate în felul următor:

  • 11 xx - adăugăm un element nou cu valoarea xx la sfârșitul listei și ne întrebăm ce valoare are reprezentantul după această modificare;
  • 22 xx - eliminăm primul element cu valoarea xx din listă, ne întrebăm care este reprezentantul listei după eliminare și punem la loc elementul pe poziția lui.

Date de intrare

Pe prima linie a fișierului de intrare operatii.in se află numărul natural NN de operații. Următoarele NN linii conțin câte o pereche de numere naturale, separate prin spațiu, care descriu operația de efectuat: tipul operației (11 sau 22) și valoarea lui xx.

Date de ieșire

Fișierul de ieșire operatii.out va conține răspunsurile la întrebările din cele NN operații pe linii separate.

Restricții și precizări

  • 1N200 0001 \le N \le 200\ 000
  • 0x200 0000 \le x \le 200\ 000 pentru ambele tipuri de operații
  • ordinea efectuării operațiilor este cea din fișierul de intrare
  • pentru operația de tipul 2 se garantează că lista are cel puțin două elemente și că are cel puțin un element egal cu xx
# Punctaj Restricții
1 20 1N10001 \le N \le 1000 și avem doar operații de tipul 1
2 23 1N10001 \le N \le 1000 și avem ambele tipuri de operații
3 12 1000<N200 0001000 < N \le 200\ 000 și avem doar operații de tipul 1
4 45 fără restricții

Exemplu

operatii.in

6
1 10
1 20
1 20
1 10
2 20
2 10

operatii.out

10
30
20
30
10
20

Explicație

Avem 6 operații.
După prima operație lista va fi formată dintr-un singur element, 10, reprezentantul este 10.
După a doua operație lista va fi 10, 20, avem două elemente cu număr maxim de apariții, reprezentantul va fi 10+20=3010 + 20 = 30.
După a treia operație, în lista 10, 20, 20 reprezentantul va fi 20.
După a patra operație, lista are elementele 10, 20, 20, 10, reprezentantul va fi 10+20=3010 + 20 = 30 (fiecare valoare va fi adunată la sumă o singură dată).
La a cincea operație, dacă ștergem primul 20, lista va fi 10, 20, 10 care îl are ca reprezentant pe 10. După ce îl punem la loc, lista va fi din nou 10, 20, 20, 10.
La a șasea operație, dacă ștergem primul 10, lista va fi 20, 20, 10 care îl are ca reprezentant pe 20. După ce îl punem la loc, lista va fi din nou 10, 20, 20, 10.

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