Cod sursa(job #720729)

Utilizator PetcuIoanPetcu Ioan Vlad PetcuIoan Data 22 martie 2012 20:52:14
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<stdio.h>
#include<assert.h>

#include<set>
#include<vector>
#include<queue>
#include<algorithm>

using namespace std;

const int kminval = -1;
int qrys;
multiset<int> my_troll_set;
multiset<int>::iterator it;
vector<int> inserted;

void read(){
  assert(freopen("heapuri.in", "r", stdin) != NULL);

  scanf("%d", &qrys);
}

void write(){
  assert(freopen("heapuri.out", "w", stdout) != NULL);

  int q_type, q_val;
  for(int i = 1; i <= qrys; ++i){
    scanf("%d", &q_type);
    if(q_type == 1){
      scanf("%d", &q_val);
      inserted.push_back(q_val);
      my_troll_set.insert(q_val);
    }
    else if(q_type == 2){
      scanf("%d", &q_val);
      it = my_troll_set.lower_bound(inserted[q_val  - 1]);
      my_troll_set.erase(it);
    }
    else
      printf("%d\n", *my_troll_set.upper_bound(kminval));
  }

}

int main(){
  read();
  write();
  return 0;
}