欢迎使用CSDN-markdown编辑器

来源:互联网 发布:如何访问google 知乎 编辑:程序博客网 时间:2024/05/16 00:41
#include <iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>using namespace std;#define maxn 2222222 << 2#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int Max[maxn];int h=0,w=0,n=0;int acc(int a,int b){    if(a>b)return a;    else    return b;}void push_up(int rt){    Max[rt] = acc(Max[rt<<1],Max[rt<<1|1]);    return;}void build(int l,int r,int rt){    Max[rt] = w;    if(l == r)return;    int m = (l + r)>>1;    build(lson);    build(rson);}int query(int x,int l,int r,int rt){    int ret = 0;   if(l == r)   {       Max[rt] -= x;       return l;   }   int m = (l + r)>>1;   ret = (Max[rt<<1] >= x)?query(x,lson):query(x,rson);   push_up(rt);   return ret;}int main(){    while(~scanf("%d%d%d",&h,&w,&n))    {        if(h > n)h = n;        build(1,h,1);        while(n--){            int x;            scanf("%d",&x);            if(Max[1] < x)printf("-1\n");            else    printf("%d\n",query(x,1,h,1));        }    }    return 0;}
0 0