Revizia anterioară Revizia următoare
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: se sterge elementul x din zeap-ul Z; in cazul in care elementul nu exista in zeap, operatia returneaza -1;
- CAUTA: se cauta elementul x in zeap-ul Z; se returneaza 0 daca elementul nu exista sau 1 daca exista;
- MAX-DIF: 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: 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
S x: se efectueaza operatia STERGE
C x: se efectueaza operatia CAUTA
MAX: se efectueaza operatia MAX-DIF
MIN: se efectueaza operatia MIN-DIF
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...10^9
- 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 |