【题目链接】

http://poj.org/problem?id=2828

【算法】

离线用线段树维护序列即可

【代码】

#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <stack>
#include <limits.h>
using namespace std;
#define MAXN 200010 int i,n;
int pos[MAXN],val[MAXN]; struct SegmentTree
{
struct Node
{
int l,r;
int cnt,val;
} Tree[MAXN<<];
inline void build(int index,int l,int r)
{
int mid;
Tree[index].l = l;
Tree[index].r = r;
Tree[index].cnt = r - l + ;
if (l == r) return;
mid = (l + r) >> ;
build(index<<,l,mid);
build(index<<|,mid+,r);
}
inline void update(int index)
{
Tree[index].cnt = Tree[index<<].cnt + Tree[index<<|].cnt;
}
inline void insert(int index,int pos,int val)
{
int mid;
if (Tree[index].l == Tree[index].r)
{
Tree[index].cnt = ;
Tree[index].val = val;
return;
}
mid = (Tree[index].l + Tree[index].r) >> ;
if (Tree[index<<].cnt >= pos) insert(index<<,pos,val);
else insert(index<<|,pos - Tree[index<<].cnt,val);
update(index);
}
inline void output(int index)
{
int mid;
if (Tree[index].l == Tree[index].r) printf("%d ",Tree[index].val);
else
{
output(index<<);
output(index<<|);
}
}
} T; int main()
{ while (scanf("%d",&n) != EOF)
{
for (i = ; i <= n; i++) scanf("%d%d",&pos[i],&val[i]);
T.build(,,n);
for (i = n; i >= ; i--) T.insert(,pos[i]+,val[i]);
T.output();
printf("\n");
} return ;
}

最新文章

  1. 怎样设置Word下次打开时跳转到上次阅读的位置
  2. php几个常用的概率算法(抽奖、广告首选)
  3. 用c++builder读取一个一行有多行变量的文件
  4. Java学习日记-2 零零碎碎
  5. [Javascript] Array methods in depth - some
  6. 在AcGIS随着大数据的生成DEM
  7. 自学Zabbix3.6.3-触发器triggers expression表达式
  8. 获取标准shell 命令的输出内容
  9. vue好用的图片查看器(v-viewer插件)
  10. SqlServer 案例:已有汽车每日行驶里程数据,计算其每日增量
  11. Java使用SFTP和FTP两种连接方式实现对服务器的上传下载 【我改】
  12. python的map/reduce区别
  13. inline-block元素间隙问题原因及解决方法
  14. Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
  15. Java Maven项目的一些补充
  16. React 初识
  17. exe4j生成的exe反编译成java代码
  18. luigi操作hive表
  19. 把http网站改为Https网站
  20. spark介绍4(sparksql)ODBC(Windows)gc

热门文章

  1. [XJOI]noip43 T2多人背包
  2. Codeforces Round #447
  3. html中&lt;frameset&gt;标签,框架结构各窗口的父级菜单子级菜单关系
  4. 关于出现Failed to instantiate SLF4J LoggerFactory问题原因,解决办法
  5. SQL Server-语句类别、数据库范式、系统数据库组成
  6. MongoDB(二)创建更新删除文档
  7. 8 Python+Selenium操作测试对象
  8. HashMap以及ConcurrentHashMap
  9. JeeSite 4.0 规划(二)
  10. Ad_hoc_polymorphism 备份