Cod sursa(job #1791577)

Utilizator andrei_diaconu11Andrei C. Diaconu andrei_diaconu11 Data 29 octombrie 2016 14:54:22
Problema Heapuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>

int heap[200001], v[200001];

inline void heapify(int n){
  int aux, i;
  for(i=n-1;i>1;i--)
    if(heap[i]<heap[i/2]){
      aux=heap[i];
      heap[i]=heap[i/2];
      heap[i/2]=aux;
    }
}

int main()
{
  int op, last, poz, i, c, x, j;
  FILE *fi=fopen("heapuri.in", "r"), *fo=fopen("heapuri.out", "w");
  fscanf(fi, "%d", &op);
  last=1;
  poz=0;
  for(j=0;j<op;j++){
    fscanf(fi, "%d", &c);
    if(c==3)
      fprintf(fo, "%d\n", heap[1]);
    else{
      fscanf(fi, "%d", &x);
      if(c==1){
        v[++poz]=x;
        heap[last++]=v[poz];
      }
      else{
        for(i=1;heap[i]!=v[x];i++);
        heap[i]=heap[--last];
      }
      heapify(last);
    }
  }
  fclose(fi);
  fclose(fo);
  return 0;
}