Fişierul intrare/ieşire: | zeap.in, zeap.out | Sursă | Happy Coding 2006 |
Autor | Mircea Bogdan Pasoi | Adăugată de | |
Timp execuţie pe test | 0.6 sec | Limită de memorie | 65536 kbytes |
Scorul tău | N/A | Dificultate |
Vezi solutiile trimise | Statistici
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;
Cerinta
Scrieti un program care sa simuleze comportamentul unui zeap.
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)
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.
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...109]
- Se recomanda folosirea functiilor gets/fgets pentru cei ce programeaza in C/C++ datorita volumului mare de date de intrare
Exemplu
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 |