#include #include using namespace std; using ll = long long; using pii = pair; using pll = pair; using vb = vector; using vi = vector; using vll = vector; using vvi = vector; using vvll = vector; using vpii = vector; using vpll = vector; using vs = vector; using vc = vector; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define all(a) (a).begin(), (a).end() #define uniq(v) sort(all(v)), (v).erase(unique(all(v)),(v).end()) #define lb(v,x) int(lower_bound(all(v),(x))-(v).begin()) #define ub(v,x) int(upper_bound(all(v),(x))-(v).begin()) #define rrep(i,n) for(int i = (int)(n) - 1; i>=0; i--) #define rep1(i,n) for(int i=1; i <=(int)(n);i++) #define reps(i,s,n) for(int i=(int)(s);i<(int)(n); i++) #define koz " " #define tor "\n" template using min_pq = priority_queue, greater>; template bool chmin(T& a, const T& b){if(b bool chmax(T& a, const T& b){if(a T ceil(T x, U y){ assert(y!=0); if(y<0) x=-x,y=-y; return (x>0 ? (x+y-1)/y : x/y); } template T floor(T x, U y){ assert(y!=0); if(y<0) x=-x,y=-y; return (x>0 ? x/y : (x-y+1)/y); } template int popcnt(T x){return __builtin_popcountll(x);} const int dx[]={1,0,-1,0,1,1,-1,-1}; const int dy[]={0,1,0,-1,1,-1,1,-1}; const int INF = 1045141919; const ll LINF = 3643648101145141919; void solve(){ ll n,k; cin >> n >> k; vll a(n); rep(i,n) cin >> a[i]; ll ok=LINF,ng=-1; auto judge=[&](ll x)->bool{ ll need=0; rep(i,n){ if(x1){ ll mid=ng+(ok-ng)/2; if(judge(mid)) ok=mid; else ng=mid; } ll cnt=0; rep(i,n){ if(a[i]>ok) cnt+=a[i]-ok; } ll rem=k-cnt; vll b(n); rep(i,n) b[i]=min(a[i],ok); vll c; c.push_back(0); rep(i,n) c.push_back(b[i]); c.push_back(0); min_pq pq; int now=0; bool ok2=false; for(int i=1;i<=n;){ int j=i; while(j<=n&&c[j]==c[i]) j++; if(c[i-1]c[j]) rep(k,min(c[i]-c[j],c[i]-c[i-1])) pq.push(j-i); i=j; } ll ans=0; rep(i,n)if(i) ans+=abs(b[i]-b[i-1]); ans+=b[0]+b[n-1]; while(rem&&!pq.empty()){ int v=pq.top(); if(v>rem){ break; } rem-=v; pq.pop(); ans-=2; } cout << ans << tor; } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(16); int _ = 1; //cin >> _; while(_--) solve(); }