Submission #1295810

#TimeUsernameProblemLanguageResultExecution timeMemory
1295810KindaGoodGamesBalloons (CEOI11_bal)C++20
30 / 100
175 ms9056 KiB
#include<bits/stdc++.h>

#define ll long long
#define double long double
#define pii pair<double,double>
#define pdd pair<double,double>
#define tiii tuple<int,int,int>

using namespace std;

double eps = 1e-6;

double dist(pdd a, pdd b){
    double dx = a.first-b.first;
    double dy = a.second-b.second;
    return sqrt((dx*dx)+(dy*dy));
}



double get(pii bal, int p){ 

    double top = (bal.first-p)*(bal.first-p);
    return (top/(4L*bal.second));
}
int main(){
    int n;
    cin >> n;

    vector<int> arr(n);
    vector<double> constr(n);

    for(int i = 0; i < n; i++){
        cin >> arr[i] >> constr[i];
    }


    vector<pii> S;
    vector<double> ans;
    for(int i = 0; i < n; i++){
        double val = 1e9; 

        val = min(val, constr[i]);
        while(S.size() && get(S.back(),arr[i]) > S.back().second){
            val = min(val, get(S.back(),arr[i]));
            S.pop_back();
        }
        if(S.size())val = min(val, get(S.back(),arr[i]));
        S.push_back({arr[i],val});
        ans.push_back(val);
    }
    cout << fixed << setprecision(3);
    for(auto v : ans) cout << v << "\n";
}
#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...