tjut 2795

来源:互联网 发布:写医学论文用什么软件 编辑:程序博客网 时间:2024/06/11 06:15
#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;  }  

0 0
原创粉丝点击