#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=2e5+10;
int c[maxn<<2];
int h,w;
void build(int l,int r,int rt)
{
c[rt]=w;
if(l==r) return;
int mid=(l+r)>>1;
build(l,mid,rt<<1);
build(mid+1,r,rt<<1|1);
}
int query(int num,int l,int r,int rt)
{
if(l==r) {
c[rt]-=num;
return l;
}
int mid=(l+r)>>1;
int ans=0;
if(num<=c[rt<<1]) ans=max(ans,query(num,l,mid,rt<<1));
else ans=max(ans,query(num,mid+1,r,rt<<1|1));
c[rt]=max(c[rt<<1],c[rt<<1|1]);
return ans;
}
int main()
{
int n,num;
while(scanf("%d%d%d",&h,&w,&n)!=EOF) {
if(h>n) h=n;
build(1,h,1);
while(n--) {
scanf("%d",&num);
if(num>c[1]) printf("-1\n");
else printf("%d\n",query(num,1,h,1));
}
}
return 0;
}
tjut 2795
最新推荐文章于 2019-01-27 21:10:00 发布