码迷,mamicode.com
首页 > 其他好文 > 详细

HDU2795 Billboard

时间:2014-11-23 00:29:03      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   sp   on   div   

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2795

 

 

 1 #include<cstdio>
 2 #include<algorithm>
 3 using namespace std;
 4 #define lson l,m,rt<<1
 5 #define rson m+1,r,rt<<1|1
 6 const int maxn = 222222;
 7 int MAX[maxn << 2];
 8 int h, w, n;
 9 void pushup(int rt)
10 {
11     MAX[rt] = max(MAX[rt << 1], MAX[rt << 1 | 1]);
12 }
13 void build(int l, int r, int rt)
14 {
15     MAX[rt] = w;
16     if (l == r) return;
17     int m = (l + r) >> 1;
18     build(lson);
19     build(rson);
20 }
21 int query(int p, int l, int r, int rt)//这里由于query和update都是对单点操作,所以将两个函数合并为一个了
22 {
23     if (l == r){
24         MAX[rt] -= p;
25         return l;
26     }
27     int m = (l + r) >> 1;
28     int ret = (MAX[rt<<1] >= p ? query(p, lson) : query(p, rson));//这里判断左子节点是否还有相应的空间,若没有则递归右子节点。
29     pushup(rt);
30     return ret;
31 }
32 int main()
33 {
34     while (~scanf("%d%d%d", &h, &w, &n)){
35         if (h > n) h = n;//通知小于h时可以直接缩小h的范围
36         build(1, h, 1);
37         while(n--){
38             int p;
39             scanf("%d", &p);
40             if (MAX[1] < p) puts("-1");
41             else printf("%d\n",query(p, 1, h, 1));
42         }
43     }
44     return 0;
45 }

 

HDU2795 Billboard

标签:style   blog   http   io   ar   color   sp   on   div   

原文地址:http://www.cnblogs.com/-Unc/p/4115969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!