标签: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