This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAX=1e18;
int main(){
int n,q;
cin>>n>>q;
vector<ll> x;
for(int i=0;i<n;i++){
ll a; cin>>a;
x.push_back(a);
}
vector<ll> nie;
nie.push_back(MAX);
for(int i=0;i<n-1;i++){
nie.push_back(x[i+1]-x[i]);
}
nie.push_back(MAX);
vector<ll> nl,nr,he;
for(int i=0;i<n;i++){
nl.push_back(x[i]);
nr.push_back(x[i]);
he.push_back(0);
}
while(q--){
ll a; cin>>a;
bool sw=0;
if(a>0) sw=1;
if(a==0) continue;
for(int i=0;i<n;i++){
int id=i+sw;
x[i]+=a;
if(nie[id]==0) continue;
if(sw){
// cout<<i<<": "<<x[i]<<" "<<nr[i]<<endl;
if(x[i]>nr[i]){
ll aux=min(x[i]-nr[i],nie[id]);
nr[i]=x[i];
he[i]+=aux;
nie[id]-=aux;
if(i==n-1) nie[id]=MAX;
}
}
else{
if(x[i]<nl[i]){
ll aux=min(nl[i]-x[i],nie[id]);
nl[i]=x[i];
he[i]+=aux;
nie[id]-=aux;
if(i==0) nie[id]=MAX;
}
}
}
}
for(int i=0;i<n;i++) cout<<he[i]<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |