#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct para{
long long int wysok=-1;
int poz=-1;
};
class Compare
{
public:
bool operator() (para para1, para para2)
{
return para1.wysok<para2.wysok;
}
};
long long int a[1002];
priority_queue<para,vector<para>,Compare>q;
int main()
{
int n,k;
long long int wyn=0;
cin>>n>>k;
for(int i=1;i<=n;++i){
cin>>a[i];
q.push({a[i],i});
}
a[0]=INT_MAX;
a[n+1]=INT_MAX;
while(!q.empty()){
para top=q.top();
q.pop();
//cout<<top.wysok<<endl;
if(a[top.poz-1]<a[top.poz]-k){
wyn+=a[top.poz]-k-a[top.poz-1];
a[top.poz-1]+=a[top.poz]-k-a[top.poz-1];
q.push({a[top.poz-1],top.poz-1});
}
if(a[top.poz+1]<a[top.poz]-k){
wyn+=a[top.poz]-k-a[top.poz+1];
a[top.poz+1]+=a[top.poz]-k-a[top.poz+1];
q.push({a[top.poz+1],top.poz+1});
}
}
/*
for(int i=1;i<=n;++i){
cout<<a[i]<<' ';
}
*/
cout<<wyn;
return 0;
}
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | #include <iostream> #include <bits/stdc++.h> using namespace std; struct para{ long long int wysok=-1; int poz=-1; }; class Compare { public: bool operator() (para para1, para para2) { return para1.wysok<para2.wysok; } }; long long int a[1002]; priority_queue<para,vector<para>,Compare>q; int main() { int n,k; long long int wyn=0; cin>>n>>k; for(int i=1;i<=n;++i){ cin>>a[i]; q.push({a[i],i}); } a[0]=INT_MAX; a[n+1]=INT_MAX; while(!q.empty()){ para top=q.top(); q.pop(); //cout<<top.wysok<<endl; if(a[top.poz-1]<a[top.poz]-k){ wyn+=a[top.poz]-k-a[top.poz-1]; a[top.poz-1]+=a[top.poz]-k-a[top.poz-1]; q.push({a[top.poz-1],top.poz-1}); } if(a[top.poz+1]<a[top.poz]-k){ wyn+=a[top.poz]-k-a[top.poz+1]; a[top.poz+1]+=a[top.poz]-k-a[top.poz+1]; q.push({a[top.poz+1],top.poz+1}); } } /* for(int i=1;i<=n;++i){ cout<<a[i]<<' '; } */ cout<<wyn; return 0; } |
English