Pagini recente » Cod sursa (job #51719) | Cod sursa (job #2719882) | Cod sursa (job #2206613) | Cod sursa (job #21596) | Cod sursa (job #3135617)
#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;
}