Pagini recente » Cod sursa (job #2125093) | Cod sursa (job #2990076) | Cod sursa (job #2313014) | Cod sursa (job #2460770) | Cod sursa (job #3129518)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
void inserts(vector<int>& v, int x){
v.push_back(x);
unsigned int k = v.size()-1;
while(k > 0 && v[k/2] > v[k]){
swap(v[k],v[k/2]);
k = k/2;
}
}
void deletes(vector<int>& v, int x){
int e = -1;
for(int i = 0; i < v.size(); i++)
if(v[i] == x){
e = i;
break;
}
if(e == -1)
return;
int last = v.size() - 1;
swap(v[e], v[last]);
v.pop_back();
while (e > 0 && v[e] < v[(e - 1) / 2]) {
swap(v[e], v[(e - 1) / 2]);
e = (e - 1) / 2;
}
}
int minim(const vector<int> v){
int mini = v[0];
for(int i = 1; i < v.size(); i++){
if(v[i]<mini)
mini = v[i];
}
return mini;
}
int main() {
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int n,a,x;
vector<int> v;
fin>>n;
for(int i=0; i<n; i++){
fin>>a;
if(a==1){
fin>>x;
inserts(v,x);
}
else if(a==2){
fin>>x;
deletes(v,x);
}
else if(a==3){
fout<<minim(v)<<endl;
}
}
fin.close();
fout.close();
return 0;
}