Submission #1345479

#TimeUsernameProblemLanguageResultExecution timeMemory
1345479duonghongducazBalloons (CEOI11_bal)C++20
0 / 100
112 ms7456 KiB
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<stack>
#include<vector>
using namespace std;
struct Ballon{
    double x;
    double r;
};

void Input(int& n, vector<Ballon>& ballons){
    cin >> n;
    ballons.resize(n);
    for(int i=0;i<n;i++){
        cin >> ballons[i].x >> ballons[i].r;
    }
}

double calculate_r2(int x1, int x2, double r){
    return ((x1-x2)*(x1-x2))/(4*r);
}

void processing(int n, vector<Ballon>& ballons){
    stack<pair<int, double>> s;
    for(int i=0;i<n;i++){
        double current_r = ballons[i].r;
        while(!s.empty()){
            pair<double, double> last_circus = s.top();
            current_r = min(ballons[i].r, calculate_r2(last_circus.first, ballons[i].x, last_circus.second));
            if(current_r>=last_circus.second){
                s.pop();
                continue;
            }
            else{
                break;
            }
        }
        s.push({ballons[i].x, ballons[i].r});
        ballons[i].r = current_r;
    }
    for(int i=0;i<n;i++){
        cout << fixed << setprecision(3) << ballons[i].r << "\n";
    }
}


int main(){
    int n;
    vector<Ballon> ballons;
    Input(n, ballons);
    processing(n, ballons);
    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...