This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
#define ll long long
#define endl "\n"
#define range(i,a,b,c) for(int i=a;i!=b;i+=c)
#define vi vector<int>
#define vll vector<ll>
long double r2(long double r1, long double x1, long double x2){
int dis = abs(x2-x1);
return 1.0*pow(dis,2)/(4*r1);
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cout << fixed << setprecision(3);
int N;
cin >> N;
vector<long double> x(N);
vector<long double> r(N);
range(i,0,N,1){
cin >> x[i] >> r[i];
}
stack<pair<long double, int>> st;
st.push({r[0],x[0]});
cout << r[0] << endl;
range(i,1,N,1){
long double minn = min(r[i], r2(st.top().first, st.top().second, x[i]));
while(st.top().first <= minn){
st.pop();
if(st.empty()) break;
minn = min(minn, r2(st.top().first, st.top().second, x[i]));
}
st.push({minn, x[i]});
cout << minn << endl;
}
return 0;
}
# | 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... |