Buy Tickets

Description

Railway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue…

The Lunar New Year was approaching, but unluckily the Little Cat still had schedules going here and there. Now, he had to travel by train to Mianyang, Sichuan Province for the winter camp selection of the national team of Olympiad in Informatics.

It was one o’clock a.m. and dark outside. Chill wind from the northwest did not scare off the people in the queue. The cold night gave the Little Cat a shiver. Why not find a problem to think about? That was none the less better than freezing to death!

People kept jumping the queue. Since it was too dark around, such moves would not be discovered even by the people adjacent to the queue-jumpers. “If every person in the queue is assigned an integral value and all the information about those who have jumped the queue and where they stand after queue-jumping is given, can I find out the final order of people in the queue?” Thought the Little Cat.

Input

There will be several test cases in the input. Each test case consists of N + 1 lines where N (1 ≤ N ≤ 200,000) is given in the first line of the test case. The next N lines contain the pairs of values Posi and Valiin the increasing order of i (1 ≤ i ≤ N). For each i, the ranges and meanings of Posi and Vali are as follows:

  • Posi ∈ [0, i − 1] — The i-th person came to the queue and stood right behind the Posi-th person in the queue. The booking office was considered the 0th person and the person at the front of the queue was considered the first person in the queue.
  • Vali ∈ [0, 32767] — The i-th person was assigned the value Vali.

There no blank lines between test cases. Proceed to the end of input.

Output

For each test cases, output a single line of space-separated integers which are the values of people in the order they stand in the queue.

Sample Input

4
0 77
1 51
1 33
2 69
4
0 20523
1 19243
1 3890
0 31492

Sample Output

77 33 69 51
31492 20523 3890 19243

Hint

The figure below shows how the Little Cat found out the final order of people in the queue described in the first test case of the sample input.

Source

思路:从后往前排,每次的数位置为这个队列剩余位置的第pos[i]个的位置;我二分区间找;
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<queue>
#include<algorithm>
#include<stack>
#include<cstring>
#include<vector>
#include<list>
#include<set>
#include<map>
using namespace std;
#define ll long long
//#define mod 1000000007
#define pi (4*atan(1.0))
const int N=4e5+,M=1e6+,inf=1e9+;
int a[M];
int lowbit(int x)
{
return x&-x;
}
void update(int x,int change,int n)
{
while(x<=n)
{
a[x]+=change;
x+=lowbit(x);
}
}
int query(int x)
{
int sum=;
while(x)
{
sum+=a[x];
x-=lowbit(x);
}
return sum;
}
int pos[N];
int val[N];
int check(int x,int len)
{
int st=;
int en=len;
while(st<en)
{
int mid=(st+en)>>;
int gg=query(mid);
if(gg<x)
st=mid+;
else
en=mid;
}
return st;
}
int ans[N];
int main()
{
int x,y,z,i,t;
while(~scanf("%d",&x))
{
for(i=;i<=x;i++)
update(i,,x);
for(i=;i<x;i++)
{
scanf("%d%d",&pos[i],&val[i]);
pos[i]++;
}
for(i=x-;i>=;i--)
{
int poss=check(pos[i],x);
ans[poss]=val[i];
update(poss,-,x);
}
for(i=;i<=x;i++)
printf("%d%c",ans[i],(i==x)?'\n':' ');
}
return ;
}

最新文章

  1. jQuery系列:Ajax
  2. Linux下运行Jmeter测试所遇问题汇总
  3. phalcon: 获取参数的方法
  4. oracle对序列的操作
  5. POJ1032 Parliament(数论)
  6. 张高兴的 UWP 开发笔记:应用内启动应用 (UWP Launch UWP)
  7. 6.前端基于react,后端基于.net core2.0的开发之路(6) 服务端渲染(SSR)
  8. main 及Scanner
  9. Windows 2008 安装Sql server 2005
  10. [MySQL]理解关系型数据库4个事务隔离级别
  11. 数据结构--图 的JAVA实现(上)
  12. 使用github管理Eclipse分布式项目开发
  13. 故障处理分析:华为5885v3 cable/ Interconnect (LEFT Panel)
  14. bootstrap-glyph-customization
  15. 常用的一个cookie 对象,还有path 兼容性问题
  16. C++ 11 智能指针 lamda 以及一个 围棋程序
  17. BZOJ2535 [Noi2010]Plane 航空管制 【贪心 + 堆】
  18. StreamingContext、DStream、Receiver深度剖析
  19. git commit或pull后恢复到原来版本
  20. valid No such filter: &#39;drawtext&#39;&quot;

热门文章

  1. 【BZOJ1096】[ZJOI2007]仓库建设 斜率优化
  2. mysql表大小写问题
  3. 微信小程序 --- 文件的上传和下载
  4. 手机联系人信息获取(contacts) ---- HTML5+
  5. 3.html+.ashx(删除学生信息)
  6. Gitlab安装和使用
  7. CH5E07 划分大理石【多重背包】
  8. linux设备驱动开发详解 笔记
  9. Python爬虫基础(一)urllib2库的基本使用
  10. 持续交付的Mesos与Docker导入篇