Pagini recente » Cod sursa (job #2932444) | Cod sursa (job #422942) | Cod sursa (job #1789170) | Cod sursa (job #1787136) | Cod sursa (job #2772337)
#include <bits/stdc++.h>
using namespace std;
ifstream f("zeap.in");
ofstream g("zeap.out");
#define cin f
#define cout g
const int Max = 1e5 + 1;
void nos()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
set < int > zeap;
struct pq_elem{
int x,y;
int dif;
};
bool operator < (const pq_elem& p1, const pq_elem& p2)
{
//operator overload
//return true daca p2 are prioritate mai mare decat p1
//conditia pe dos
return p1.dif > p2.dif;
}
priority_queue < pq_elem > mindif;
void insereaza(int val)
{
if(zeap.find(val) == zeap.end())
{
//daca nu e deja
zeap.insert(val);
auto before = zeap.find(val);
if(before != zeap.begin())
{
//am ceva mai mic
before --;
mindif.push({val , *before,abs(val - *before)});
}
auto after = zeap.find(val);
after ++;
if(after!=zeap.end())
mindif.push({val,*after,abs(val - *after)});
}
}
void sterge(int val)
{
if(zeap.find(val) == zeap.end())
g<<"-1\n";
else
{
auto before = zeap.find(val);
auto after = zeap.find(val);
after ++;
if(after!=zeap.end() and before != zeap.begin())
{
before --;
mindif.push({*before,*after,abs(*before - *after)});
}
zeap.erase(val);
}
}
void cauta(int val)
{
if(zeap.find(val) == zeap.end())
cout<<"0\n";
else
cout<<"1\n";
}
void findmin()
{
if(zeap.size() < 2)
{
cout<<"-1\n";
return;
}
while(zeap.find(mindif.top().x) == zeap.end() or zeap.find(mindif.top().y) == zeap.end())
mindif.pop();
cout<<mindif.top().dif<<'\n';
}
void findmax(){
if(zeap.size() < 2)
{
cout<<"-1\n";
return;
}
auto small = zeap.begin();
auto big = zeap.end();
big --;
cout<<abs(*small - *big)<<'\n';
}
int32_t main()
{
string type;
while(f>>type)
{
if(type == "I")
{
//inserare
int val;
f>>val;
insereaza(val);
}
if(type == "S")
{
int val;
f>>val;
sterge(val);
}
if(type == "C")
{
int val;
f>>val;
cauta(val);
}
if(type == "MAX")
findmax();
if(type == "MIN")
{
//cout<<"min";
findmin();
//cout<<"endmin";
}
}
return 0;
}