#include<bits/stdc++.h>
#define debug(x) cerr << #x << " " << x << "\n"
#define debugs(x) cerr << #x << " " << x << " "
#pragma GCC optimize("Ofast")
#define int long long
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int range_rng(int l, int r)
{
return uniform_int_distribution<int>(l,r)(rng);
}
long long dp[200105];
long long coord[200105];
int n,d,ans;
bool ok(long long x)
{
int i;
for (i=1; i<=n; i++)
{
if (i==1)
dp[i]=coord[i]-x;
else
{
if (coord[i]-dp[i-1]>=d)
dp[i]=coord[i]-min(coord[i]-dp[i-1]-d,x);
else
{
if (coord[i]+x<dp[i-1]+d)
return false;
else
dp[i]=dp[i-1]+d;
}
}
}
return true;
}
signed main()
{
/*
ifstream fin("arbore.in");
ofstream fout("arbore.out");
*/
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int m,i,j,pas,x,ans,r,z;
cin >> n >> m >> d;
d*=2;
for (i=1; i<=m; i++)
{
cin >> x;
coord[i]=x*2;
if (i==1)
{
dp[i]=coord[i];
ans=0;
cout << "0 ";
continue;
}
if (coord[i]+ans-dp[i-1]<d)
{
ans+=(dp[i-1]+d-coord[i]-ans)/2;
dp[i]=coord[i]+ans;
}
else
{
if (coord[i]-dp[i-1]>=d)
dp[i]=coord[i]-min(coord[i]-dp[i-1]-d,ans);
else
dp[i]=dp[i-1]+d;
}
if (ans%2==0)
cout << ans/2 << " ";
else
cout << (ans-1)/2 << ".5" << " ";
}
return 0;
}
| # | 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... |