/*
*
* \OoO/
*
*/
#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <iomanip>
#include <map>
#include <numeric>
#include <functional>
#include <algorithm>
#include <set>
#include <queue>
#include <climits>
#include <cstdlib>
#include <chrono>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
using namespace std;
// #define ordered_set tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update>
#define iamtefu ios_base::sync_with_stdio(false); cin.tie(0);
#define ll long long int
#define ld long double
#define fl(i,a,n) for (ll i(a); i<n; i++)
#define rfl(i,a,n) for (ll i(n-1); i>=a; i--)
#define print(a) for (auto x:a){cout<<x<<" ";} cout<<"\n";
#define tt int tt; cin>>tt; for(;tt--;)
ll gcd(ll a, ll b){
if (b==0){
return a;
}
return gcd(b, a%b);
}
ll pw(ll a, ll b, ll m){
ll res=1;
a%=m;
while (b){
if (b&1){
res=(res*a)%m;
}
a=(a*a)%m;
b>>=1;
}
return res;
}
void scn(){
ll n; cin>>n;
vector <pair<ll,ld>> a(n);
fl(i,0,n){
cin>>a[i].first>>a[i].second;
}
sort(a.begin(), a.end());
auto dis=[&](ll x1, ll x2, ld r1){
return (1.0*((x1-x2)*(x1-x2)))/(4*r1);
};
cout<<fixed<<setprecision(3);
vector <ll> hu;
fl(i,0,n){
ll sz=0;
//vector <ll> heh;
while (hu.size() && a[i].second>=a[hu.back()].second){
a[i].second=min(a[i].second, dis(a[i].first, a[hu.back()].first, a[hu.back()].second));
//heh.push_back(hu.back());
if (a[i].second>=a[hu.back()].second){
hu.pop_back();
}
}
if (hu.size()){
a[i].second=min(a[i].second, dis(a[i].first, a[hu.back()].first, a[hu.back()].second));
/*while (heh.size() && a[heh.back()].second>a[i].second){
hu.push_back(heh.back());
heh.pop_back();
}*/
hu.push_back(i);
} else {
/*while (heh.size() && a[heh.back()].second>a[i].second){
hu.push_back(heh.back());
heh.pop_back();
}*/
hu.push_back(i);
}
}
for (auto x:a){
cout<<x.second<<"\n";
}
//cout<<"\n";
}
int main(){
iamtefu;
#if defined(airths)
auto t1=chrono::high_resolution_clock::now();
freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
#else
//
#endif
//tt
{
scn();
}
#if defined(airths)
auto t2=chrono::high_resolution_clock::now();
ld ti=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
ti*=1e-6;
cerr<<"Time elapsed: "<<setprecision(12)<<ti;
cerr<<"ms\n";
#endif
return 0;
}
Compilation message
bal.cpp: In function 'void scn()':
bal.cpp:63:6: warning: unused variable 'sz' [-Wunused-variable]
63 | ll sz=0;
| ^~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
10 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
2 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
340 KB |
505 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
328 KB |
2000 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
15 ms |
1156 KB |
20000 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
36 ms |
2636 KB |
50000 numbers |
2 |
Correct |
40 ms |
2288 KB |
49912 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
77 ms |
4484 KB |
100000 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
104 ms |
5264 KB |
115362 numbers |
2 |
Correct |
86 ms |
5032 KB |
119971 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
122 ms |
6692 KB |
154271 numbers |
2 |
Correct |
140 ms |
8024 KB |
200000 numbers |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
140 ms |
8264 KB |
200000 numbers |
2 |
Correct |
131 ms |
8068 KB |
199945 numbers |