이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll X[200002];
ll P[200002], N[200002];
vector<pair<ll, int>> v;
int main()
{
ios::sync_with_stdio(false); cin.tie(NULL);
int n, q; cin >> n >> q;
for(int i=1;i<=n;i++) cin >> X[i];
for(int i=1;i<n;i++) v.push_back({X[i+1] - X[i], i});
ll Neg = 0, Pos = 0, W = 0;
sort(v.begin(), v.end());
for(int i=1;i<=n;i++) P[i] = -1;
for(int i=1;i<=n;i++) N[i] = 1;
for(int i=1,j=0;i<=q;i++)
{
ll A; cin >> A;
W += A;
Pos = max(Pos, W);
Neg = min(Neg, W);
while(j < n-1 && v[j].first <= Pos - Neg)
{
int x = v[j].second;
if(A > 0)
{
N[x+1] = Neg;
P[x] = v[j].first + Neg;
}
else
{
P[x] = Pos;
N[x+1] = Pos - v[j].first;
}
j++;
}
}
for(int i=1;i<=n;i++)
{
if(P[i] == -1) P[i] = Pos;
if(N[i] == 1) N[i] = Neg;
}
for(int i=1;i<=n;i++)
{
cout << P[i] - N[i] << "\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |