1408C - Discrete Acceleration - CodeForces Solution


binary search dp implementation math two pointers *1500

Please click on ads to support us..

C++ Code:

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


#define endl "\n"
#define int long long
#define cout(x) cout<<(x)<<endl
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
int T = 1;


void solve(){
    int n,l; cin>>n>>l;
    vector<double> a(n);
    for(int i=0;i<n;i++) cin>>a[i];
    double ans = -1;
    double high = l; double low = 0;
    while(low<=high){
        double mid = (low+high)/2;
        double posa = 0; double posb = l;
        double va = 1; double vb = 1;
        double temp = mid;
        int i = 0;
        while(temp){
            if(i>=n){
                posa += temp*va;
                temp = 0;
                break;
            }
            double gg = (a[i]-posa)/va;
            if(gg<=temp){
                posa = a[i];
                temp-=gg;
                va++;
                i++;
            }
            else{
                posa+=temp*va;
                temp = 0;
            }
        }
        i = n-1; temp = mid;
        while(temp){
            if(i<0){
                posb -= temp*vb;
                temp = 0;
                break;
            }
            double gg = (posb-a[i])/vb;
            if(gg<=temp){
                posb = a[i];
                temp-=gg;
                vb++;
                i--;
            }
            else{
                posb-=temp*vb;
                temp = 0;
            }
        }
        if(abs(posa-posb)<=1e-5){
            ans = mid;
            break;
        }
        else if(posa<posb){
            low = mid;
        }
        else high = mid;

    }

    cout<<fixed<<setprecision(16)<<ans<<endl;
}

int32_t main(){
    fastio;
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

1487A - Arena
1520D - Same Differences
376A - Lever
1305A - Kuroni and the Gifts
1609A - Divide and Multiply
149B - Martian Clock
205A - Little Elephant and Rozdil
1609B - William the Vigilant
978B - File Name
1426B - Symmetric Matrix
732B - Cormen --- The Best Friend Of a Man
1369A - FashionabLee
1474B - Different Divisors
1632B - Roof Construction
388A - Fox and Box Accumulation
451A - Game With Sticks
768A - Oath of the Night's Watch
156C - Cipher
545D - Queue
459B - Pashmak and Flowers
1538A - Stone Game
1454C - Sequence Transformation
165B - Burning Midnight Oil
17A - Noldbach problem
1350A - Orac and Factors
1373A - Donut Shops
26A - Almost Prime
1656E - Equal Tree Sums
1656B - Subtract Operation
1656A - Good Pairs