Submission #1189820

#TimeUsernameProblemLanguageResultExecution timeMemory
1189820UnforgettableplMeasures (CEOI22_measures)C++20
0 / 100
1592 ms584 KiB
#include <bits/stdc++.h>
using namespace std;

#define int __int128


int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int N,M,D;
    {
        long long a,b,c;
        cin >> a >> b >> c;
        N=a;
        M=b;
        D=c;
    }
    D*=2;
    vector<int> arr(N);
    for(int&i:arr){long long a;cin>>a;i=a;i*=2;}
    auto solve = [&](int x){
        arr.emplace_back(2*x);
        if(arr.size()==1)return (int)0;
        sort(arr.begin(),arr.end());
        auto poss = [&](int amt){
            vector<int> C(arr.size());
            for(int i=1;i<arr.size();i++)C[i]=arr[i]-arr[i-1];
            C[1]+=amt;
            C.back()+=amt;
            bool works = true;
            for(int i=1;i<arr.size();i++){
                if(i!=1){
                    int L = min(amt,max(C[i-1]-D,(int)0));
                    C[i]+=L;
                    C[i-1]-=L;
                }
                if(i!=arr.size()-1 and C[i]<D){
                    int L = min(amt,D-C[i]);
                    C[i]+=L;
                    C[i+1]-=L;
                }
                if(C[i]<D)works=false;
            }
            return works;
        };
        int ans = -1;
        for(int jump=(1ll<<50);jump;jump/=2){
            if(!poss(ans+jump))ans+=jump;
        }
        return ++ans;
    };
    for(int i=1;i<=M;i++){
        int x;long long a;cin>>a;x=a;
        long double ans = solve(x);
        cout << ans/2.0 << ' ';
    }
    cout << '\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...