255610-8 离线最小值问题

2556   10-8 离线最小值问题

题目描述

给定集合S={1,2,…,n},以及由n个Insert(x)和m个DeleteMin()运算组成的运算序列。其中n 个Insert(x)运算将集合S={1,2,…,n}中每个数插入动态集合T 恰好一次,DeleteMin()每次删除动态集合T中的最小元素。离线最小值问题要求对于给定的运算序列,计算出每个DeleteMin()运算输出的值。换句话说,要求计算数组out,使第i次DeleteMin()运算输出的值为out[i],i=1,2,…,m。在执行具体计算前,运算序列已给定,这就是问
题表述中离线的含义。

对于给定的由n 个Insert(x)和m 个DeleteMin()运算组成的运算序列,用并查集计算出每个DeleteMin()运算输出的值。

输入格式:

输入数据第1 行有2个正整数n和m,分别表示运算序列由n个Insert(x)和m个DeleteMin()运算组成。接下来的1 行中有n+m个整数。整数x>0 时表示执
行Insert(x)运算;整数x=-1 时表示执行DeleteMin()运算。

输出格式:

将计算出的每个DeleteMin()运算输出的值依次输出

输入样例 复制
10 6
10 9 -1 -1 8 7 6 -1 -1 -1 5 4 3 2 1 -1
输出样例 复制
9 10 6 7 8 1

说明

0
0
通过提交
时空限制1000ms/128mb
题目来源
评测方式在线评测
题目类型
难        度