#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;
};
cout << fixed;
for(int i=1;i<=M;i++){
int x;long long a;cin>>a;x=a;
long long ans = solve(x);
if(ans&1)cout<<ans/2<<".5"<<' ';
else cout<<ans/2<<' ';
}
cout << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |