Pagini recente » Cod sursa (job #209981) | Cod sursa (job #1158154) | Cod sursa (job #825216) | Cod sursa (job #2064724) | Cod sursa (job #3135631)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
multiset<long long> hp;
string cerinta;
long long mind;
long long n;
void minn(){
multiset<long long>::iterator it = hp.begin();
multiset<long long>::iterator nt = std::next(it);
mind = std::numeric_limits<long long>::max();
while (nt != hp.end()) {
long long dif = *nt - *it;
if (dif < mind) {
mind = dif;
}
++it;
++nt;
}
/*multiset<long long>::iterator it;
multiset<long long>::iterator nt;
mind = LONG_LONG_MAX;
sort(hp.begin(), hp.end());
for(it=hp.begin(); it!=std::prev(hp.end()); ++it) {
nt= next(it);
long long dif = *nt-*it;
if (dif < mind){
mind = dif;
}
}*/
}
int main()
{
while(fin>>cerinta){
if(cerinta=="I"){
fin>>n;
if(hp.count(n)==0)
hp.insert(n);
}
if(cerinta=="S"){
fin>>n;
if(hp.count(n)==1)
hp.erase(n);
else fout<<-1<<endl;
}
if(cerinta=="C"){
fin>>n;
fout<<hp.count(n)<<endl;
}
if(cerinta=="MAX"){
if(hp.size()<2)
fout<<-1;
else{
fout<<*hp.rbegin()-*hp.begin()<<endl;
}
}
if(cerinta=="MIN"){
if(hp.size()<2)
fout<<-1;
else{
minn();
fout<<mind<<endl;
}
}
}
return 0;
}
/*#include <bits/stdc++.h>
using namespace std;
ifstream fin("zeap.in");
ofstream fout("zeap.out");
priority_queue<long long> pqmax;
priority_queue<long long> pqmin;
string cerinta;
long long n,u,pu;
int cauta(long long k){
if(pqmax.empty()) return 0;
else{
stack<long long> st;
while(pqmax.top()!=k and !pqmax.empty()){
st.push(pqmax.top());
pqmax.pop();
}
if(pqmax.empty()){
while(!st.empty()){
pqmax.push(st.top());
st.pop();
}
return 0;
}
else{
while(!st.empty()){
pqmax.push(st.top());
st.pop();
}
return 1;
}
}
}
int sterge(long long k){
if(cauta(k)==1){
stack<long long> stmax;
stack<long long> stmin;
while(pqmax.top()!=k and !pqmax.empty()){
stmax.push(pqmax.top());
pqmax.pop();
}
while(pqmin.top()!=-k and !pqmin.empty()){
stmin.push(pqmin.top());
pqmin.pop();
}
pqmax.pop();
pqmin.pop();
while(!stmax.empty()){
pqmax.push(stmax.top());
stmax.pop();
}
while(!stmin.empty()){
pqmin.push(stmin.top());
stmin.pop();
}
return 0;
}
else
return -1;
}
long long MAX(){
if(pqmax.size()<2)
return -1;
else{
return pqmax.top()+pqmin.top();
}
}
long long MIN(){
long long minn=LONG_LONG_MAX;
long long dif;
if(pqmax.size()<2)
return -1;
else{
vector<long long> aux;
//cout<<pqmax.size()<<' ';
while(!pqmax.empty()){
aux.push_back(pqmax.top());
pqmax.pop();
}
for(int i=0; i<aux.size()-1; i++){
for(int j=i+1; j<aux.size(); j++){
//cout<<aux[i]<<' ';
dif=abs(aux[i]-aux[j]);
if(dif<minn)
minn=dif;
}
}
for(int i=0; i<aux.size(); i++){
pqmax.push(aux[i]);
}
return minn;
}
}
int main()
{
while(fin>>cerinta){
if(cerinta=="I"){
fin>>n;
//fout<<n<<endl;
if(cauta(n)==0){
pqmax.push(n);
pqmin.push(-n);}
}
if(cerinta=="S"){
fin>>n;
//fout<<n<<endl;
if(sterge(n)==-1)
fout<<-1<<endl;
}
if(cerinta=="C"){
fin>>n;
//fout<<n<<endl;
fout<<cauta(n)<<endl;
}
if(cerinta=="MAX"){
fout<<MAX()<<endl;
}
if(cerinta=="MIN"){
fout<<MIN()<<endl;
}
}
/*while (!pqmax.empty()) {
std::cout << pqmax.top() << " ";
pqmax.pop();
}*/
//return 0;
//}