CF272C.Dima and Staircase
普及/提高-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Dima's got a staircase that consists of n stairs. The first stair is at height _a_1, the second one is at _a_2, the last one is at a__n (1 ≤ _a_1 ≤ _a_2 ≤ ... ≤ a__n).
Dima decided to play with the staircase, so he is throwing rectangular boxes at the staircase from above. The i-th box has width w__i and height h__i. Dima throws each box vertically down on the first w__i stairs of the staircase, that is, the box covers stairs with numbers 1, 2, ..., w__i. Each thrown box flies vertically down until at least one of the two following events happen:
- the bottom of the box touches the top of a stair;
- the bottom of the box touches the top of a box, thrown earlier.
We only consider touching of the horizontal sides of stairs and boxes, at that touching with the corners isn't taken into consideration. Specifically, that implies that a box with width w__i cannot touch the stair number w__i + 1.
You are given the description of the staircase and the sequence in which Dima threw the boxes at it. For each box, determine how high the bottom of the box after landing will be. Consider a box to fall after the previous one lands.
迪马有一段由 n 级台阶组成的楼梯。第一级台阶高度为 a1,第二级为 a2,最后一级为 an(满足 1 ≤ a1 ≤ a2 ≤ ⋯ ≤ an)。
迪马决定和这段楼梯玩一个游戏:他从上方朝楼梯垂直投掷若干矩形箱子。第 i 个箱子的宽度为 wi、高度为 hi。迪马将每个箱子垂直向下投掷到楼梯的前 wi 级台阶上,即该箱子覆盖编号为 1, 2, …, wi 的台阶。每个被投出的箱子垂直下落,直到发生以下两个事件之一时停止:
- 箱子底面接触到某级台阶的顶面;
- 箱子底面接触到之前已投出并已落地的某个箱子的顶面。
我们仅考虑台阶与箱子的水平边之间的接触,不考虑角点接触。特别地,这意味着一个宽度为 wi 的箱子无法接触到编号为 wi + 1 的台阶。
现给出楼梯的描述以及迪马投掷箱子的顺序。对每个箱子,请确定其落地后底面所处的高度。注意:每个箱子均在前一个箱子落地之后才开始下落。
输入格式
The first line contains integer n (1 ≤ n ≤ 105) — the number of stairs in the staircase. The second line contains a non-decreasing sequence, consisting of n integers, _a_1, _a_2, ..., a__n (1 ≤ a__i ≤ 109; a__i ≤ a__i + 1).
The next line contains integer m (1 ≤ m ≤ 105) — the number of boxes. Each of the following m lines contains a pair of integers w__i, h__i (1 ≤ w__i ≤ n; 1 ≤ h__i ≤ 109) — the size of the i-th thrown box.
The numbers in the lines are separated by spaces.
第一行包含一个整数 n(1≤n≤105)—— 楼梯的阶数。
第二行包含一个非递减序列,由 n 个整数 a1,a2,…,an 组成(1≤ai≤109;ai≤ai+1)。
接下来一行包含一个整数 m(1≤m≤105)—— 箱子的数量。
随后的 m 行中,每行包含一对整数 wi,hi(1≤wi≤n;1≤hi≤109)—— 第 i 个被扔下的箱子的尺寸。
各行中的数字以空格分隔。
输出格式
Print m integers — for each box the height, where the bottom of the box will be after landing. Print the answers for the boxes in the order, in which the boxes are given in the input.
Please, do not use the %lld specifier to read or write 64-bit integers in C++. It is preferred to use the cin, cout streams or the %I64d specifier.
输出 m 个整数——对每个箱子,输出其落地后底部所在的高度。请按照输入中给出箱子的顺序输出对应答案。
请注意,在 C++ 中读写 64 位整数时,请勿使用 %lld 说明符。推荐使用 cin、cout 流,或 %I64d 说明符。
输入输出样例
输入#1
5 1 2 3 6 6 4 1 1 3 1 1 1 4 3
输出#1
1 3 4 6
输入#2
3 1 2 3 2 1 1 3 1
输出#2
1 3
输入#3
1 1 5 1 2 1 10 1 10 1 10 1 10
输出#3
1 3 13 23 33
说明/提示
The first sample are shown on the picture.

第一个样例展示在图片中。

输入解题思路,AI测评打分。不知道怎么写?