제출 #1339815

#제출 시각아이디문제언어결과실행 시간메모리
1339815joze_plocnikBalloons (CEOI11_bal)C++20
100 / 100
593 ms8260 KiB
#include <iostream>
#include <vector>
#include <map>
#include <queue>
#include <iomanip>
#include <cmath>

#define int long long // vse ti je long long
#define vi vector<int>
#define vvi vector<vi>
#define vpii vector<pair<int,int>>
#define oopt cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(false);
#define forn(i,n) for(int i = 0; i<n; i++)
#define all(x) (x).begin(), (x).end()
#define ld long double

using namespace std;

signed main() {  
    int n; cin >> n;
    vi v(n), mxr(n);
    forn(i,n){
        cin >> v[i] >> mxr[i];
    }
    
    
    vi stack; //indexi balonov
    vector<ld> r(n,-1); //odgovori
    forn(i,n){
        //cout << "smo na: " << i << "\n";
        //cout << "stack na zacetku izgleda: ";
        //for(int nekaj : stack) cout << nekaj << " ";
        //cout << "\n";
        ld novi_r = mxr[i];
        int pnt = stack.size()-1; //kje v stacku smo
        while(pnt >= 0){
            int id = stack[pnt];
            int razd = v[i]-v[id];
            ld r_mora = razd*razd/(4.0*r[id]);
            novi_r = min(novi_r,r_mora);
            if(r_mora <= r[id]){
                break; //prišli smo do večjega, več ne gre
            }
            pnt--;
        }
        r[i] = novi_r;
        while(!stack.empty()){
            int id = stack.back();
            if(r[id] <= r[i]) stack.pop_back();
            else break;
        }
        stack.push_back(i);
    }
    
    forn(i,n){
        cout << fixed << setprecision(3) << r[i] << "\n";
    }

}

#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...