Pagini recente » Cod sursa (job #1820734) | Cod sursa (job #416300) | Cod sursa (job #1905842) | Cod sursa (job #2315287) | Cod sursa (job #1545597)
#include <iostream>
#include <fstream>
#include <string>
#include <set>
#include <map>
#include <algorithm>
#include <vector>
using namespace std;
bool functie(int& a, int& b)
{
if (a > b)
{
return 1;
}
return 0;
}
int main()
{
ifstream in("zeap.in");
ofstream out("zeap.out");
string c;
std::set<int>::iterator it;
vector<int> diferente;
map<int, int> scaderi;
set<int> b;
int i;
while (!in.eof())
{
in >> c;
if (c == "I")
{
in >> i;
if (b.empty())
{
it = b.insert(i).first;
continue;
}
it=b.insert(i).first;
if (it == b.begin())
{
diferente.push_back(abs(*it - *(++it)));
push_heap(diferente.begin(), diferente.end(),functie);
}
else if (it == (--b.end()))
{
diferente.push_back(abs(*it - *(--it)));
push_heap(diferente.begin(), diferente.end(), functie);
}
else
{
diferente.push_back(abs(*it - *(--it)));
push_heap(diferente.begin(), diferente.end(), functie);
diferente.push_back(abs(*it - *(++it)));
push_heap(diferente.begin(), diferente.end(), functie);
}
}
else if (c == "S")
{
in >> i;
it = b.find(i);
if (it == b.end())
{
out << "-1\n";
}
else
{
if (b.size() == 1)
{
b.erase(it);
continue;
}
if (it == b.begin())
{
scaderi[abs(*it - *(++it))]++;
}
else if (it == (--b.end()))
{
scaderi[abs(*it - *(--it))]++;
}
else
{
scaderi[abs(*it - *(--it))]++;
scaderi[abs(*it - *(++it))]++;
}
b.erase(it);
}
}
else if (c == "C")
{
in >> i;
it=b.find(i);
if (it == b.end())
{
out << "0\n";
}
else
{
out << "1\n";
}
}
else if (c == "MAX")
{
if (b.size() >= 2)
{
out << *(--b.end()) - *b.begin()<<"\n";
}
else
{
out << "-1\n";
}
}
else
{
if (b.size() >= 2)
{
while (scaderi[diferente[0]] > 0)
{
scaderi[diferente[0]]--;
pop_heap(diferente.begin(), diferente.end(),functie);
diferente.pop_back();
}
out << diferente[0]<<"\n";
}
else
{
out << "-1\n";
}
}
}
}