标签:starting 判断 script more nta start stream ecif its
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<queue>
using namespace std;
int h,w,o;
struct node
{
    int l,r,v;  //l表高度,v表可加入的最大值
}tr[200100<<2];
void build(int n,int l,int r )
{
    tr[n].l=l;
    tr[n].r=r;
    tr[n].v=w;
    if(tr[n].l==tr[n].r)
        return;
    int mid =(l+r)>>1;
    build(n<<1,l,mid);
    build(n<<1|1,mid+1,r);
}
int updata(int v,int n)
{
        int res;
    if(tr[n].l==tr[n].r)
    {
        tr[n].v-=v;
        return tr[n].l;
    }
    if(tr[n<<1].v>=v)
        res=updata(v,n<<1);
    else
        res=updata(v,n<<1|1);
    tr[n].v=max(tr[n<<1].v,tr[n<<1|1].v);
    return res;
}
int main()
{
    while(~scanf("%d%d%d",&h,&w,&o))
    {
      
        build(1,1,min(h,o));
        for(int i =0;i<o;i++)
        {
            int x;
            scanf("%d",&x);
            if(tr[1].v<x)
                printf("-1\n");
            else
                printf("%d\n",updata(x,1));
        }
    }
}
标签:starting 判断 script more nta start stream ecif its
原文地址:http://www.cnblogs.com/ygtzds/p/7570161.html