QOJ.ac

QOJ

시간 제한: 2 s 메모리 제한: 64 MB 총점: 100

#14953. 气球

통계

CEOI 2011 的组织者们正计划举办一场有很多气球的派对。将会有 $n$ 个气球,它们都是球形的,并且在地面上排成一条线。

这些气球尚未被充气,每个气球的初始半径均为零。此外,第 $i$ 个气球被永久固定在地面上坐标为 $x_i$ 的位置。它们将按照从左到右的顺序依次被充气。当一个气球被充气时,它的半径会连续增大,直到达到该气球的半径上限 $r_i$,或者该气球触碰到之前已经充气的某个气球为止。

图 1:样例测试中的气球完全充气后的示意图。

组织者们想要估算充气所有气球需要多少空气。你的任务是求出每个气球最终的半径。

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 200\,000$) —— 气球的数量。

接下来的 $n$ 行描述这些气球。其中第 $i$ 行包含两个整数 $x_i$ 和 $r_i$ ($0 \le x_i \le 10^9$,$1 \le r_i \le 10^9$)。你可以认为气球是按照 $x$ 坐标严格递增的顺序给出的。

在占分 40 分的测试数据中,满足额外限制 $n \le 2\,000$。

输出格式

你的程序应该输出恰好 $n$ 行,其中第 $i$ 行包含恰好一个实数 —— 第 $i$ 个气球充气后的最终半径。如果输出中每个数与正确答案的绝对误差不超过 $0.001$,则你的答案将被接受。

样例

输入样例 1

3
0 9
8 1
13 7

输出样例 1

9.000
1.000
4.694

说明

提示:在 C/C++ 中输出保留三位小数的 long double 类型,你可以使用 printf("%.3Lf\n", a);,其中 a 是要打印的 long double 变量。在 C++ 中使用流(streams),你可以在使用 cout << a << "\n"; 打印之前使用 cout << fixed << setprecision(3);(请记得包含 <iomanip> 头文件)。在 Pascal 中,你可以使用 writeln(a:0:3);。建议在 C/C++ 中使用 long double 类型,在 Pascal 中使用 extended 类型,这是因为这些类型具有更高的精度。特别地,在所有被认为是正确的算法中,使用这些类型时不会发生舍入误差。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.