#include <bits/stdc++.h>
using namespace std;
int main(){
int n,k;
cin>>n>>k;
vector<long long>a(n);
long long ile=0;
priority_queue<pair<long long,int>>pq;
for(int i=0;i<n;i++){
cin>>a[i];
pq.push({a[i],i});
}
vector<bool>odw(n);
while(!pq.empty()){
auto w=pq.top();
pq.pop();
if(odw[w.second]==true)
continue;
odw[w.second]=true;
if(w.second==0){{
if(a[w.second+1]+k<w.first)
ile+=w.first-a[w.second+1]-k;
a[w.second+1]=w.first-k;
pq.push({a[w.second+1],w.second+1});}
continue;
}
if(w.second==n-1){
if(a[w.second-1]+k<w.first){
ile+=w.first-a[w.second-1]-k;
a[w.second-1]=w.first-k;
pq.push({a[w.second-1],w.second-1});
}
continue;
}
if(a[w.second+1]+k<w.first){
ile+=w.first-a[w.second+1]-k;
a[w.second+1]=w.first-k;
pq.push({a[w.second+1],w.second+1});}
if(a[w.second-1]+k<w.first){
ile+=w.first-a[w.second-1]-k;
a[w.second-1]=w.first-k;
pq.push({a[w.second-1],w.second-1});
}
}
cout<<ile;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <bits/stdc++.h> using namespace std; int main(){ int n,k; cin>>n>>k; vector<long long>a(n); long long ile=0; priority_queue<pair<long long,int>>pq; for(int i=0;i<n;i++){ cin>>a[i]; pq.push({a[i],i}); } vector<bool>odw(n); while(!pq.empty()){ auto w=pq.top(); pq.pop(); if(odw[w.second]==true) continue; odw[w.second]=true; if(w.second==0){{ if(a[w.second+1]+k<w.first) ile+=w.first-a[w.second+1]-k; a[w.second+1]=w.first-k; pq.push({a[w.second+1],w.second+1});} continue; } if(w.second==n-1){ if(a[w.second-1]+k<w.first){ ile+=w.first-a[w.second-1]-k; a[w.second-1]=w.first-k; pq.push({a[w.second-1],w.second-1}); } continue; } if(a[w.second+1]+k<w.first){ ile+=w.first-a[w.second+1]-k; a[w.second+1]=w.first-k; pq.push({a[w.second+1],w.second+1});} if(a[w.second-1]+k<w.first){ ile+=w.first-a[w.second-1]-k; a[w.second-1]=w.first-k; pq.push({a[w.second-1],w.second-1}); } } cout<<ile; } |
English