标签:
Description
Input
Output
Sample Input
Sample Output
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define mid (L+R)/2 #define lson rt*2,L,mid #define rson rt*2+1,mid+1,R const int maxn=222222; //最多贴n个通告,所以就算h很大,只要满足n个通告就行了 int maxv[maxn*4]; void PushUP(int rt){ maxv[rt]=max(maxv[rt*2],maxv[rt*2+1]); } void build(int rt,int L,int R,int wid){ maxv[rt]=wid; if(L==R){ return ; } build(lson,wid); build(rson,wid); } int query(int rt,int L,int R,int len){ if(L==R){ maxv[rt]-=len; return L; } int ret=0; if(maxv[rt*2]>=len){ ret= query(lson,len); }else {ret= query(rson,len);} PushUP(rt); return ret; } int main(){ int n,h,w; while(scanf("%d%d%d",&h,&w,&n)!=EOF){ if(n<h){ h=n; } build(1,1,h,w); for(int i=0;i<n;i++){ int len; scanf("%d",&len); if(maxv[1]<len) printf("-1\n"); else printf("%d\n",query(1,1,h,len)) ; } } return 0; }
HDU 2795——Billboard——————【单点更新、求最小位置】
标签:
原文地址:http://www.cnblogs.com/chengsheng/p/4419922.html