#include"stdio.h"
#include"string.h"
struct point
{
int x,y;
int sum;
}a[200000*3];
int h,w,n;
int max(int a,int b)
{
a=a>b?a:b;
return a;
}
void tree(int t,int x,int y)
{
a[t].x=x;
a[t].y=y;
a[t].sum=w;
if(x==y)
return ;
int temp=t*2;
int mid=(x+y)/2;
tree(temp,x,mid);
tree(temp+1,mid+1,y);
}
int find(int t,int x)
{
int ans;
if(a[t].x==a[t].y)
{
a[t].sum-=x;
return a[t].x;
}
int temp=2*t;
if(x<=a[temp].sum)
ans=find(temp,x);
else
ans=find(temp+1,x);
a[t].sum=max(a[temp].sum,a[temp+1].sum);
return ans;
}
int main()
{
int m;
while(scanf("%d%d%d",&h,&w,&n)!=EOF)
{
if(h>n)
h=n;
tree(1,1,h);
while(n--)
{
scanf("%d",&m);
if(a[1].sum<m)
printf("-1\n");
else
printf("%d\n",find(1,m));
}
}
return 0;
}
hdu(2795)
最新推荐文章于 2017-08-13 10:02:09 发布