Pagini recente » Atasamentele paginii Profil dany | Atasamentele paginii Profil morandy13 | algoritmiada-2022/runda-4 | Atasamentele paginii k7a | infoarena | Diferente pentru problema/zeap intre reviziile 1 si 9
Diferente pentru
problema/zeap intre reviziile
#1 si
#9
Nu exista diferente intre titluri.
Diferente intre continut:
==Include(page="template/taskheader" task_id="zeap")==
==Include(page="template/raw")==
zeap
Desi putini stiu, una din marile pasiuni ale lui Zaharel sunt structurile de date. Intr-o zi de vara, rasfoind diverse cursuri de structuri de date, Zaharel s-a decis sa inventeze propria lui structura pe care a numit-o zeap. In conceptia lui Zaharel, un zeap mentine o multime de numere naturale distincte si suporta urmatoarele operatii intr-un timp eficient:
S INSEREAZA(Z,x): se insereaza elementul x in zeap-ul Z; daca x exista deja in zeap se ignora operatia; aceasta operatie nu returneaza nimic
S STERGE(Z,x): se sterge elementul x din zeap-ul Z; in cazul in care elementul nu exista in zeap, operatia returneaza -1
S CAUTA(Z,x) : se cauta elementul x in zeap-ul Z; se returneaza 0 daca elementul nu exista sau 1 daca exista
S MAX-DIF(Z): returneaza diferenta in modul maxima dintre oricare doua elemente distincte din zeap-ul Z; daca nu exista cel putin doua elemente in zeap se returneaza -1
S MIN-DIF(Z): returneaza diferenta in modul minima dintre oricare doua elemente distincte din zeap-ul Z; daca nu exista cel putin doua elemente in zeap se returneaza -1
h2. Cerinta
Screiti un program care sa simuleze comportamentul unui zeap.
h2. Date de Intrare
Fisierul de intrare zeap.in va contine pe fiecare linie descrierea unei operatii:
I x: se efectueaza operatia INSEREAZA(Z,x)
S x: se efectueaza operatia STERGE(Z,x)
C x: se efectueaza operatia CAUTA(Z,x)
MAX: se efectueaza operatia MAX-DIF(Z)
MIN: se efectueaza operatia MIN-DIF(Z)
h2. Date de Iesire
Pentru fiecare operatie care returneaza o valoare se va afisa rezultatul respectiv pe cate o linie in fisierul de iesire zeap.out.
h2. Restrictii si observatii
S Fisierul de intare va contine maxim 300.000 linii
S Numerele care se vor insera in zeap vor fi numere naturale din intervalul [1...10^9]
S Se recomanda folosirea functiilor gets/fgets pentru cei ce programeaza in C/C++ datorita volumului mare de date de intrare
h2. Exemplu
zeap.in zeap.out
I 1 -1
I 3 6
S 2 2
I 7 0
MAX 1
MIN 6
C 5 6
C 1
S 3
MAX
==Include(page="template/taskheader" task_id="zeap")==
Desi putini stiu, una din marile pasiuni ale lui Zaharel sunt structurile de date. Intr-o zi de vara, rasfoind diverse cursuri de structuri de date, Zaharel s-a decis sa inventeze propria lui structura pe care a numit-o zeap. In conceptia lui Zaharel, un zeap mentine o multime de numere naturale distincte si suporta urmatoarele operatii intr-un timp eficient:
* **INSEREAZA{@(Z,x)@}**: se insereaza elementul $x$ in zeap-ul $Z$; daca $x$ exista deja in zeap se ignora operatia; aceasta operatie nu returneaza nimic;
* **STERGE{@(Z,x)@}**: se sterge elementul $x$ din zeap-ul $Z$; in cazul in care elementul nu exista in zeap, operatia returneaza -1;
* **CAUTA{@(Z,x)@}**: se cauta elementul $x$ in zeap-ul $Z$; se returneaza 0 daca elementul nu exista sau 1 daca exista;
* **MAX-DIF{@(Z)@}**: returneaza diferenta in modul maxima dintre oricare doua elemente distincte din zeap-ul $Z$; daca nu exista cel putin doua elemente in zeap se returneaza -1;
* **MIN-DIF{@(Z)@}**: returneaza diferenta in modul minima dintre oricare doua elemente distincte din zeap-ul Z; daca nu exista cel putin doua elemente in zeap se returneaza -1;
h2. Cerinta
Scrieti un program care sa simuleze comportamentul unui zeap.
h2. Date de intrare
Fisierul de intrare $zeap.in$ va contine pe fiecare linie descrierea unei operatii:
**I x**: se efectueaza operatia **INSEREAZA{@(Z,x)@}**
**S x**: se efectueaza operatia **STERGE{@(Z,x)@}**
**C x**: se efectueaza operatia **CAUTA{@(Z,x)@}**
**MAX**: se efectueaza operatia **MAX-DIF{@(Z)@}**
**MIN**: se efectueaza operatia **MIN-DIF{@(Z)@}**
h2. Date de iesire
Pentru fiecare operatie care returneaza o valoare se va afisa rezultatul respectiv pe cate o linie in fisierul de iesire $zeap.out$.
h2. Restrictii si precizari
* Fisierul de intare va contine maxim $300 000$ linii
* Numerele care se vor insera in zeap vor fi numere naturale din intervalul $[1...10^9^]$
* Se recomanda folosirea functiilor gets/fgets pentru cei ce programeaza in C/C++ datorita volumului mare de date de intrare
h2. Exemplu
table(example). |_. zeap.in |_. zeap.out |
|I 1
I 3
S 2
I 7
MAX
MIN
C 5
C 1
S 3
MAX
MIN
|-1
6
2
0
1
6
6|
==Include(page="template/taskfooter" task_id="zeap")==
MIN
==Include(page="template/taskfooter" task_id="zeap")==
Nu exista diferente intre securitate.
Diferente intre topic forum: