Cod sursa(job #3247120)

Utilizator PapCzierPeterPap-Czier Peter PapCzierPeter Data 5 octombrie 2024 17:51:05
Problema Heapuri Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <climits>
using namespace std;

int main()
{
    ifstream f("heapuri.in");
    ofstream g("heapuri.out");
    int n,m,x;
    f>>n;
    vector<int>v(n);
    vector<int>v2(n);

    for (int z=1; z<=n; z++) {

        f>>m;


        if(m==1){
            f>>x;
            v[z]=x;v2[z]=x;
            int k=z;
            while  (v[k]<v[k-1]&&k>1) {swap (v[k],v[k-1]);k--;}
m=0;
        }


        if(m==2){
         z--;n--;
         f>>x;int y=v2[x];

         int k=z;
         while (y<v[k]) k=k/2;

         //if (y-v[k]>v[2*k]-y) k*=2;
        //while (y<v[k]) k=k-1;
         while (y>v[k]||v[k]==INT_MAX) k=k+1;

         //for (int i=k;i<z;i++) swap (v[i],v[i+1]);
         //cout<<k<<" "<<v[k]<<endl;
         v[k]=INT_MAX;
         //z--;n--;

m=0;
        }

        if(m==3){
                int i=1;
        while (v[i]==INT_MAX) i++;
            g<<v[i]<<endl;
            z--;n--;
m-0;
        }
            /*
            cout<<endl;
            for(int i=1; i<=z; i++)cout<<v[i]<<" ";
            cout<<endl;
            */

    }

    return 0;
}