1011C - Fly - CodeForces Solution


binary search greedy math *1500

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
using namespace std;

vector <int> c;
bool f(double p, int m)
{
    for (auto x : c)
        p -= (m + p) / x;
    if (p < 0) return 0;

    return 1;
}

int main()
{
    int n, m;
    cin >> n >> m;
    vector <int> a(n);
    vector <int> b(n);

    for (int i = 0; i < n; ++i) cin >> a[i];
    for (int i = 0; i < n; ++i) cin >> b[i];
    c.resize(2 * n);
    for (int i = 0; i < n - 1; ++i){
        c[2 * i] = a[i];
        c[2 * i + 1] = b[i + 1];
    }
    c[2 * n - 2] = a[n - 1];
    c[2 * n - 1] = b[0];

    if (find(c.begin(), c.end(), 1) != c.end()){
        cout << -1;
    }
    else {
         double left = 0, right = 2e9, eps = 1e-8, mid;
         while (abs(right - left) > eps){
            mid = (right + left) / 2;
            if (f(mid, m)) right = mid;
            else left = mid;
         }
         if (left <= 1e9) printf("%.7f", left);
         else cout << -1;
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

151A - Soft Drinking
1352A - Sum of Round Numbers
281A - Word Capitalization
1646A - Square Counting
266A - Stones on the Table
61A - Ultra-Fast Mathematician
148A - Insomnia cure
1650A - Deletions of Two Adjacent Letters
1512A - Spy Detected
282A - Bit++
69A - Young Physicist
1651A - Playoff
734A - Anton and Danik
1300B - Assigning to Classes
1647A - Madoka and Math Dad
710A - King Moves
1131A - Sea Battle
118A - String Task
236A - Boy or Girl
271A - Beautiful Year
520B - Two Buttons
231A - Team
479C - Exams
1030A - In Search of an Easy Problem
158A - Next Round
71A - Way Too Long Words
160A - Twins
1A - Theatre Square
1614B - Divan and a New Project
791A - Bear and Big Brother