Pagini recente » Cod sursa (job #328567) | Cod sursa (job #2785451) | Cod sursa (job #885376) | Cod sursa (job #2275045) | Cod sursa (job #890617)
Cod sursa(job #890617)
// Include
#include <cstdio>
#include <set>
#include <map>
using namespace std;
// Variabile
char operation[15];
set<int> elements;
map<int, int> differences;
// Main
int main()
{
freopen("zeap.in", "rt", stdin);
freopen("zeap.out", "wt", stdout);
while(gets(operation))
{
if(operation[1] == ' ')
{
int num;
sscanf(operation+2, "%d", &num);
if(operation[0] == 'I')
{
if(elements.find(num) != elements.end())
continue;
elements.insert(num);
/*if(elements.size() == 1)
continue;*/
set<int>::iterator numPos = elements.find(num);
set<int>::iterator nextPos = numPos;
++nextPos;
if(nextPos != elements.end())
++differences[*nextPos - *numPos];
if(numPos != elements.begin())
{
set<int>::iterator previousPos = numPos;
--previousPos;
++differences[*numPos - *previousPos];
if(nextPos != elements.end())
{
--differences[*nextPos - *previousPos];
if(!differences[*nextPos - *previousPos])
differences.erase(*nextPos - *previousPos);
}
}
continue;
}
if(operation[0] == 'S')
{
set<int>::iterator numPos = elements.find(num);
if(numPos == elements.end())
{
printf("%d\n", -1);
continue;
}
set<int>::iterator nextPos = numPos;
++nextPos;
if(nextPos != elements.end())
{
--differences[*nextPos - *numPos];
if(!differences[*nextPos - *numPos])
differences.erase(*nextPos - *numPos);
}
if(numPos != elements.begin())
{
set<int>::iterator previousPos = numPos;
--previousPos;
--differences[*numPos - *previousPos];
if(!differences[*numPos - *previousPos])
differences.erase(*numPos - *previousPos);
if(nextPos != elements.end())
++differences[*nextPos - *previousPos];
}
continue;
}
//if(operation[i] == 'C')
{
printf("%d\n", elements.find(num)!=elements.end()? 1:0);
continue;
}
continue;
}
if(operation[1] == 'A') // max
{
set<int>::iterator first = elements.begin(), last = elements.end();
--last;
printf("%d\n", *last - *first);
continue;
}
//if(operation[1] == 'I') // min
{
printf("%d\n", differences.begin()->first);
continue;
}
continue;
}
fclose(stdin);
fclose(stdout);
return 0;
}