Submission #506131

#TimeUsernameProblemLanguageResultExecution timeMemory
506131DanerZeinSnowball (JOI21_ho_t2)C++14
33 / 100
2577 ms2308 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...