//UPDATERA ARRAY STORLEKEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll INF=1e15;
const ll MAXN=200006;//UPDATERA ARRAY STORLEKEN!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ll n;
double ans[MAXN];
struct node{
double x,r;
}lst[MAXN];
stack<ll> S;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n;
for(int i=1;i<=n;i++) cin>>lst[i].x>>lst[i].r;
cout<<setprecision(20);
for(int i=1;i<=n;i++){
if(!S.empty()){
ans[i]=min((lst[S.top()].x-lst[i].x)*(lst[S.top()].x-lst[i].x)/(4*ans[S.top()]),lst[i].r);
while(!S.empty()&&ans[i]>=ans[S.top()]){
S.pop();
ans[i]=min((lst[S.top()].x-lst[i].x)*(lst[S.top()].x-lst[i].x)/(4*ans[S.top()]),ans[i]);
}
}else{
ans[i]=lst[i].r;
}
S.push(i);
cout<<ans[i]<<'\n';
}
}
| # | 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... |