問題:
蒜廠有乙個 h×w 的矩形公告板,其中 h 是高度,w 是寬度。
現在有若干張 1×wi 的公告, wi 是寬度,公告只能橫著放,即高度為 1 的邊垂直於水平面,且不能互相有重疊,每張公告都要求盡可能的放在最上面的合法的位置上。
若可以放置,輸出每塊可放置的位置的行號;若不存在,輸出 −1。行號由上至下分別為 1,2,…,h。
輸入格式
第一行三個整數 h,w,n (1≤h,w≤10^9;1≤n≤200,000) 。
接下來 n 行,每行乙個整數 wi(1≤wi≤109) 。
輸出格式
輸出n 行,一行乙個整數。
樣例輸入:
3 5 524
3331
2345
6樣例輸出12
13-1
#includeusing namespace std;
int s[1000010 * 5];
int h,w,n;
void up(int p)
void buildtree(int p,int l,int r,int x)
int mid = (l + r) / 2;
if(l <= mid)
if(r > mid)
up(p);
}void modify(int p,int l,int r,int x,int c)
int mid = (l + r) / 2;
if(x <= mid)
else
up(p);
}int query(int p,int l,int r,int x,int y)
int mid = (l + r) / 2;
int res = 0;
if(x <= mid)
if(y > mid)
return res;
}void getval(int p,int l,int r,int x)
else if(x <= query(1,1,h,mid + 1,r))
else
}if(l == r)
else
}int main()
return 0;
}
計蒜客 公告板
問題描述 蒜廠有乙個 h w 的矩形公告板,其中 h 是高度,w 是寬度。現在有若干張 1 wi 的公告,wi 是寬度,公告只能橫著放,即高度為 1 的邊垂直於水平面,且不能互相有重疊,每張公告都要求盡可能的放在最上面的合法的位置上。若可以放置,輸出每塊可放置的位置的行號 若不存在,輸出 1。行號由...
計蒜客 彈簧板
有乙個小球掉落在一串連續的彈簧板上,小球落到某乙個彈簧板後,會被彈到某乙個地點,直到小球被彈到彈簧板以外的地方。假設有 n n 個連續的彈簧板,每個彈簧板佔乙個單位距離,a i a i 代表代表第 i i 個彈簧板會把小球向前彈 a i a i 個距離。比如位置 1 1 的彈簧能讓小球前進 2 2 ...
計蒜客習題 朋友
在社交的過程中,通過朋友,也能認識新的朋友。在某個朋友關係圖中,假定 a 和 b 是朋友,b 和 c 是朋友,那麼 a 和 c 也會成為朋友。即,我們規定朋友的朋友也是朋友。現在,已知若干對朋友關係,詢問某兩個人是不是朋友。請編寫乙個程式來解決這個問題吧。輸入格式 第一行 三個整數 n,m,p n ...