Submission #1202344

#TimeUsernameProblemLanguageResultExecution timeMemory
1202344SSKMFBalloons (CEOI11_bal)C++20
50 / 100
2094 ms1948 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++)
    {
        int locatie , limita;
        cin >> locatie >> limita;

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

        long double raza = limita;
        for (int i = 1 ; i <= candidati[0].first ; i++)
            { raza = min(raza , Necesar(candidati[i] , locatie)); }

        candidati[++candidati[0].first] = {locatie , raza};
        cout << raza << '\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...