Diferente pentru problema/undo2 intre reviziile #1 si #4

Diferente intre titluri:

undo2
Undo2

Diferente intre continut:

== include(page="template/taskheader" task_id="undo2") ==
Poveste şi cerinţă...
$XORin$ este nemulţumit de problemele primite în prima zi de concurs de la $Olimpiada Naţională de Informatică$ şi decide astfel să se implice în comisie. În scurt timp devine specialistul comisiei în generarea de teste formate din şiruri de numere. Din când în când el trebuie să adauge sau să şteargă elemente din şir. Câteodată el decide să readauge dintre elemente şterse anterior. Fie şirul de numere $a$ = (a ~1~ , a ~2~ , ... ,a ~N~ ) şi $N$ numărul de elemente din şir după fiecare operaţie.
Astfel el are de realizat următoarele operaţii pornind de la un şir vid:
 
* Inserează la sfârşitul şirului o valoare $x$;
* Şterge ultimele $x$ elemente din şir;
* Readaugă la sfârşitul şirului primele $x$ elemente şterse. Dacă, de exemplu, în operaţia anterioară de ştergere a unui număr $y$ de elemente, am şters elementele a ~N-y+1~ , a ~N-y+2~ ,..., a ~N~ , iar acum urmează o operaţie de readăugare a $x$ elemente, vor fi adăugate în ordine elementele a ~N-y+1~ , a ~N-y+2~ ,..., a ~N-y+x~ la sfârşitul şirului.
 
Din când în când $XORin$ îşi pune următoarea întrebare: de câte ori există valoarea $x$ în şir?
h2. Date de intrare
Fişierul de intrare $undo2.in$ ...
Pe prima linie a fişierului $undo2.in$ se va afla $M$ ce reprezintă numărul de operaţii.
Pe următoarele $M$ linii se vor afla operaţiile codificate astfel:
$1 x$ - se inserează elementul $x$ la sfârşitul şirului
$2 y$ - se şterg ultimele $y$ elemente adăugate în şir
$3 z$ - se adaugă înapoi la sfârşitul şirului primele $z$ elemente şterse
$4 t$ - se afişează numărul de elemente cu valoarea $t$ din şir
h2. Date de ieşire
În fişierul de ieşire $undo2.out$ ...
Pe fiecare linie a fişierului $undo2.out$ se scriu răspunsurile la întrebările lui $XORin$, fiecare răspuns pe câte o linie.
h2. Restricţii
* $... ≤ ... ≤ ...$
* Toate numerele din fişierul de intrare sunt cuprinse între $1$ şi $200 000$;
* Pentru $20%$ din teste se garantează $M ≤ 1 000$, pentru alte $40%$ din teste, se garantează că numerele inserate vor fi distincte;
* Între o operaţie de readăugare si operatia anterioară de stergere nu vor exista operatii de inserare.
* Numărul de elemente readăugate nu va fi mai mare decât numărul de elemente şterse la ultima operaţie.
* Între două operaţii de readăugare va exista cel puţin o operaţie de ştergere.
h2. Exemplu
table(example). |_. undo2.in |_. undo2.out |
| This is some
  text written on
  multiple lines.
| This is another
  text written on
  multiple lines.
|
 
h3. Explicaţie
 
...
table(example). |_. undo2.in |_. undo2.out |_. Exemplu |
| 16
1 1
1 2
1 3
1 4
4 4
2 2
4 3
3 1
4 4
4 3
1 7
1 7
1 7
4 7
2 2
4 7
| 1
0
0
1
3
1
| Iniţial şirul este vid.
După primele 4 operaţii de inserare şirul este 1, 2, 3, 4.
Operaţia 4 4 va afişa 1.
Operaţia 2 2 va şterge ultimele două elemente şirul devenind 1, 2.
Din cauză că elementul 3 a fost şters, a şaptea operaţie va afişa 0.
Operaţia 3 1 va readăuga la sfârşitul şirului elementul 3.
În urma acestei operaţii şirul devine 1, 2, 3.
Operaţia 4 4 va afişa 0, iar operaţia 4 3 va afişa 1.
ş.a.m.d.
|
== include(page="template/taskfooter" task_id="undo2") ==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.