Pagini recente » Cod sursa (job #2324824) | Cod sursa (job #594018) | Cod sursa (job #897024) | Cod sursa (job #3120831) | Cod sursa (job #2751924)
#include<bits/stdc++.h>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
struct comparare{
bool operator()(const pair<int,int> &a, const pair<int,int> &b){
return (a.first-a.second)>(b.first-b.second);
}
};
set<int> zeap;
//set<int>::iterator it,succesor,predecesor;
priority_queue<pair<int,int>, vector<pair<int,int>>, comparare> minDif;
void insereaza(int val){
if(zeap.count(val)==0){
zeap.insert(val);
set<int>::iterator it,succesor,predecesor;
it=zeap.find(val);
succesor=zeap.find(val);
predecesor=zeap.find(val);
succesor++;
predecesor--;
if(it!=zeap.begin()){
minDif.push(make_pair(*it,*predecesor));
if(succesor!=zeap.end())
minDif.push(make_pair(*succesor,*it));
}
}
}
void stergere(int val){
if(zeap.count(val)==0){
g<<-1<<"\n";
}
else{
set<int>::iterator it1,it2;
it1=zeap.find(val);
it2=zeap.find(val);
it2++;
if(it2!=zeap.end() && it1!=zeap.begin()){
it1--;
minDif.push(make_pair(*it2,*it1));
}
zeap.erase(val);
}
}
void cautare(int val){
g<<zeap.count(val)<<'\n';
}
void maxDif(){
if(zeap.size()<2)
g<<-1<<'\n';
else{
set<int>::iterator first,last;
first=zeap.begin();
last=zeap.end();
last--;
g<<*last-*first<<'\n';
}
}
void MinDif(){
if(zeap.size()<2)
cout<<-1<<'\n';
else{
//if(zeap.count(minDif.top().first)==1 && zeap.count(minDif.top().second)==1)
// g<<minDif.top().first-minDif.top().second<<'\n';
//else{
while(!(zeap.count(minDif.top().first)==1 && zeap.count(minDif.top().second)==1)){
minDif.pop();
}
g<<minDif.top().first-minDif.top().second<<'\n';
//}
}
}
int main(){
int val,count=0,a,b;
string operatie;
while(f>>operatie){
if(operatie=="I"){
f>>val;
insereaza(val);
}
else if(operatie=="S"){
f>>val;
stergere(val);
}
else if(operatie=="C"){
f>>val;
cautare(val);
}
else if(operatie=="MAX"){
maxDif();
}
else if(operatie=="MIN"){
MinDif();
}
//for(auto x: zeap){
// cout<<x<<" ";
// }
}
return 0;
}