Submission #1314301

#TimeUsernameProblemLanguageResultExecution timeMemory
1314301ashikur_Balloons (CEOI11_bal)C++20
100 / 100
97 ms5092 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
 
#define inf (ll)1e15
#define ll long long
#define lll __int128_t
#define pi pair<int, int>
#define pl pair<ll, ll>
#define vi vector<int>
#define vl vector<ll>
#define vd vector<double>
#define mod 1000000007
// #define mod 998244353
#define pie acos(-1.0)
#define LSOne(i) ((i) & -(i))
#define EPS 1e-9

struct point{
    double x, r;
};

int main(){
    std::ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n; cin >> n;
    vector<point> vtr(n);
    for(ll i = 0; i < n; i++) cin >> vtr[i].x >> vtr[i].r;

    vector<point> valid;
    for(int i = 0; i < n; i++){ 
        auto [curr_x, curr_r] = vtr[i];
        while(valid.size()){
            auto [prev_x, prev_r] = valid.back();
            curr_r = min(curr_r, (curr_x-prev_x) * (curr_x-prev_x) / (4*prev_r));
            if(curr_r >= prev_r){
                valid.pop_back();
            } else{
                break;
            }
        }
        cout << fixed << setprecision(3) << curr_r << "\n";
        valid.push_back({curr_x, curr_r});
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...