标签:style blog color os io for div amp
倒着搞就可以了,先进会被后面覆盖。
#include <cstdio> #include <cstring> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map> #include <cstdlib> #include <list> #include <set> #include <queue> #include <stack> #include<math.h> using namespace std; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 const int maxn=222222; int sum[maxn<<2]; int color[maxn<<2]; int a[maxn];int b[maxn]; void up(int rt) { sum[rt]= sum[rt<<1]+sum[rt<<1|1]; } void build(int l,int r,int rt) { color[rt]=0; if(l==r){ sum[rt]=1; return ; } int mid=(l+r)>>1; build(lson); build(rson); up(rt); } void update(int ans,int add,int l,int r,int rt) { if(l==r){ sum[rt]-=1; color[rt]= add; return ; } int mid=(l+r)>>1; if(ans<=sum[rt<<1]) update(ans,add,lson); else update(ans-sum[rt<<1],add,rson); up(rt); } void ask(int key,int l,int r,int rt) { if(l==r){ printf("%d ",color[rt]) ;return ; } int mid=(l+r)>>1; if(key<=mid) ask(key,lson); else ask(key,rson); } int main() { int n; while(scanf("%d",&n)!=EOF){ build(1,n,1); for(int i=0;i<n;i++){ scanf("%d%d",&a[i],&b[i]); } for(int i=n-1;i>=0;i--){ update(a[i]+1,b[i],1,n,1); } for(int i=1;i<=n;i++) ask(i,1,n,1); cout<<endl; } return 0; }
Poj2828Buy Tickets线段树,布布扣,bubuko.com
标签:style blog color os io for div amp
原文地址:http://www.cnblogs.com/yigexigua/p/3928238.html