标签: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 }
标签:style blog http io ar color sp on div
原文地址:http://www.cnblogs.com/-Unc/p/4115969.html