제출 #1233821

#제출 시각아이디문제언어결과실행 시간메모리
1233821goppamachBalloons (CEOI11_bal)C++20
100 / 100
113 ms5040 KiB
#include <bits/stdc++.h>

using namespace std;

template<class T> bool chmax(T &a, T const &b) {
    return (a < b ? (a = b, true) : false);
}

template<class T> bool chmin(T &a, T const &b) {
    return (a > b ? (a = b, true) : false);
}

#define el "\n"
#define pii pair<int, int>
#define pll pair<ll, ll>
#define fi first
#define se second
#define FOR(i, l, r) for (int i = l; i <= r; i++)
#define FOD(i, l, r) for (int i = l; i >= r; i--)
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sz(x) (int)(x).size()
#define by(x) [](auto const &a, auto const &b) { return a.x < b.x; }
#define fast_io ios_base::sync_with_stdio(false); cin.tie(nullptr);
#define PROBLEM "bal"

using db = long double;
using ll = long long;
using vi = vector<int>;
using vll = vector<ll>;
using vpii = vector<pii>;
using vpll = vector<pll>;

#define LOCAL
#ifdef LOCAL
template<typename T> void _print(const char* name, T&& x) {
    cerr << name << " = " << x << el;
}
#define debug(x) _print(#x, x)
#else
#define debug(x)
#endif

mt19937 rng((uint32_t)chrono::steady_clock::now().time_since_epoch().count());

const int MAXN = 2E5 + 5;
const int INF = 1E9 + 7;
const ll MOD = 1E9 + 7, INFLL = 1E18 + 7;
const double EPS = 1E-9;
const int PRECISION = 3;

struct Circle {
    db x, r;

    Circle(db x, db r): x(x), r(r) {}
};

db res[MAXN];

void solve() {
    int n;
    cin >> n;

    stack<Circle> inflated;
    FOR(i, 1, n) {
        db x, max_r;
        cin >> x >> max_r;

        while (!inflated.empty()) {
            auto const &prev = inflated.top();
            chmin(max_r, (x - prev.x) * (x - prev.x) / (4.0 * prev.r));
            if (max_r >= prev.r) {
                inflated.pop();
                continue;
            } else {
                break;
            }
        }

        inflated.emplace(x, max_r);
        res[i] = max_r;
    }

    cout << fixed << setprecision(PRECISION);
    FOR(i, 1, n) {
        cout << res[i] << el;
    }
}

int main() {
    fast_io
    #ifndef LOCAL
    freopen(PROBLEM ".INP", "r", stdin);
    freopen(PROBLEM ".OUT", "w", stdout);
    #endif

    int t = 1;
    // cin >> t;
    while (t--) solve();
}
#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...