제출 #1202428

#제출 시각아이디문제언어결과실행 시간메모리
1202428SSKMFBalloons (CEOI11_bal)C++20
30 / 100
110 ms1956 KiB
#include <bits/stdc++.h>
using namespace std;

pair <int , long double> candidati[200001];

inline long double Necesar (pair <int , long double>& anterior , const int actual)
{
    return 1LL * (actual - anterior.first) * (actual - anterior.first) / (4 * anterior.second);
}

int main ()
{
    ios :: sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    int lungime;
    cin >> lungime;

    cout << fixed << setprecision(3);

    for (int indice = 1 ; indice <= lungime ; indice++)
    {
        pair <int , long double> actual;
        cin >> actual.first >> actual.second;

        while (candidati[0].first > 1 && Necesar(candidati[candidati[0].first - 1] , actual.first) <= Necesar(candidati[candidati[0].first] , actual.first))
            { candidati[0].first--; }

        if (candidati[0].first)
            { actual.second = min(actual.second , Necesar(candidati[candidati[0].first] , actual.first)); }

        while (candidati[0].first && candidati[candidati[0].first].second <= actual.second)
            { candidati[0].first--; }

        candidati[++candidati[0].first] = actual;
        
        cout << actual.second << '\n';
    }

    return 0;
}
#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...