标签:
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