#include<cstdio>
#include<cstring>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define MAX(x,y) ((x)>(y)?(x):(y))
using namespace std;
int w,h,t[800020];
void build(int l,int r,int rt)
{
t[rt]=w;
if(l==r)
return ;
int m=(l+r)>>1;
build(lson);
build(rson);
}
int query(int k,int l,int r,int rt)
{
int res;
if(l==r)
{
t[rt]-=k;
return l;
}
int m=(l+r)>>1;
if(t[rt<<1]>=k)
res=query(k,lson);
else
res=query(k,rson);
t[rt]=MAX(t[rt<<1],t[rt<<1|1]);
return res;
}
int main()
{
int q;
while(~scanf("%d%d%d",&h,&w,&q))
{
if(q<h)
h=q;
build(1,h,1);
while(q--)
{
int x;
scanf("%d",&x);
if(x>t[1])
printf("-1\n");
else
printf("%d\n",query(x,1,h,1));
}
}
return 0;
}
hdu 2795
最新推荐文章于 2017-05-10 13:59:54 发布