Cod sursa(job #3129518)

Utilizator raluca_rRadu Raluca raluca_r Data 14 mai 2023 20:49:10
Problema Heapuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.3 kb
#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;
}