#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |