Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2007-03-08 10:37:55.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:zeap.in, zeap.outSursăHappy Coding 2006
AutorMircea Bogdan PasoiAdăugată de
Timp execuţie pe test1.2 secLimită de memorie65536 kbytes
Scorul tăuN/ADificultatenormalnormalnormalnormalnormal

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.inzeap.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
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?