Submission #1198553

#TimeUsernameProblemLanguageResultExecution timeMemory
1198553Born_To_LaughBalloons (CEOI11_bal)C++17
100 / 100
98 ms7616 KiB
// Born_To_Laugh - Hughie Do
#include <bits/stdc++.h>
#define alle(sth) sth.begin(), sth.end()
using namespace std;
typedef long long ll;
typedef long double ld;
[[maybe_unused]] const ll MOD = 998244353, INF = 1e9 + 7;

const int maxn = 2e5 + 10;
int n;
vector<int> x(maxn, 0), r(maxn, 0);
vector<ld> val(maxn, 0.0);

ld func(int i, int j){
    ld num = (ld)(x[i] - x[j]) * (x[i] - x[j]);
    ld num1 = (ld)4 * val[j];
    return num / num1;
}
void solve(){
    cin >> n;
    for(int i=1; i<=n; ++i){
        cin >> x[i] >> r[i];
    }

    vector<int> st;
    for(int i=1; i<=n; ++i){
        val[i] = ld(r[i]);
        while(!st.empty()){
            int j = st.back();
            val[i] = min(val[i], func(i, j));
            if(val[i] > val[j]){
                st.pop_back();
                continue;
            }
            break;
        }
        st.push_back(i);
        cout << val[i] << '\n';
    }
    // cout << func(3, 1);
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout << fixed << setprecision(7);
    solve();
}
// Lotus
#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...