sum表示的是区间的剩余容纳长度
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAX 200005
#define ls rt<<1
#define rs rt<<1|1
#define mid (l+r)>>1
int sum[MAX << 2];
int h, w, n;
int ww;
void uprt(int rt)
{
sum[rt] = max(sum[ls], sum[rs]);
}
void build(int l,int r,int rt)
{
sum[rt] = w;
if (l == r)
{
return;
}
int m = mid;
build(l, m, ls);
build(m + 1, r, rs);
}
int query(int p, int l, int r, int rt)
{
if (l == r)
{
sum[rt] -= p;
return l;
}
int ans = -1;
int m = mid;
if (p <= sum[ls])
ans = query(p, l, m, ls);
else
if (p<=sum[rs])
ans = query(p, m + 1, r, rs);
uprt(rt);
return ans;
}
int main()
{
while (cin >> h >> w >> n)
{
int k = min(h, n);
build(1, k, 1);
for (int i = 0; i < n; i++)
{
scanf("%d", &ww);
if (ww>sum[1])
printf("-1\n");
else
printf("%d\n", query(ww, 1, k, 1));
/*
写成这样就WA
*/
//printf("%d\n", query(ww, 1, k, 1));
}
}
return 0;
}