#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n, q;
cin >> n >> q;
vector<int> pos(n);
for (auto &&i : pos)
{
cin >> i;
}
vector<pair<int,int>> limites(n, {0, 0});
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> ecarts;
for (int i = 0; i < n-1; i++)
{
ecarts.push({pos[i+1] - pos[i], i});
}
int mini = 0, maxi = 0, actuel = 0;
for (int i = 0; i < q; i++)
{
int req;
cin >> req;
actuel += req;
mini = min(mini, actuel);
maxi = max(maxi, actuel);
while (!ecarts.empty() && ecarts.top().first <= abs(mini) + maxi)
{
pair<int,int> top = ecarts.top();
if (req < 0) {
limites[top.second].second = maxi;
limites[top.second + 1].first = top.first - maxi;
}
else {
limites[top.second + 1].first = abs(mini);
limites[top.second].second = top.first - abs(mini);
}
ecarts.pop();
}
}
while (!ecarts.empty())
{
pair<int,int> top = ecarts.top();
limites[top.second].second = maxi;
limites[top.second + 1].first = abs(mini);
ecarts.pop();
}
limites[0].first = abs(mini);
limites[n-1].second = maxi;
for (auto &&i : limites)
{
cout << i.first + i.second << endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |