이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int INF = 1000000000;
const ll LINF = (ll) INF * (ll) INF;
const ld DINF = (ld) INF * (ld) INF;
int main() {
int n;
cin >> n;
vector<pair<ld, ld>> arr(n);
for (int i=0; i<n; i++) {
cin >> arr[i].first; //x coord
cin >> arr[i].second; //radius
}
vector<pair<ld, ld>> q;
q.push_back(arr[0]);
for (int i=1; i<n; i++) {
while (true) {
if (q.empty()) {
break;
}
pair<ld, ld> last = q[i-1];
ld h1 = arr[i].first - last.first;
ld r1 = (h1 * h1)/(4 * last.second);
if (q.size() == 1) {
arr[i].second = min(arr[i].second, r1);
break;
}
pair<ld, ld> second_last = q[i-2];
ld h2 = arr[i].first - second_last.first;
ld r2 = (h2 * h2)/(4 * second_last.second);
//cout << "r1r2 " << r1 << " " << r2 << endl;
if (r2 < r1) {
q.pop_back();
}
arr[i].second = min(arr[i].second, min(r2, r1));
}
cout << setprecision(20) << endl;
q.push_back(arr[i]);
}
for (int i=0; i<n; i++) {
cout << arr[i].second << endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |