Source Code
#include <bits/stdc++.h>
using namespace std;
#define   IOS   ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);srand(chrono::high_resolution_clock::now().time_since_epoch().count());
#define   mp make_pair
#define   pb push_back
#define   ll long long
#define   debug(x)  cout << '[' << #x << " is: " << x << "] " << endl;
#define   debugg(x,y)  cout << '[' << #x << " is: " << x << "] " << " " << '[' << #y << " is: " << y << "] ";
#define   rsor(v)   sort(v.rbegin() , v.rend());
#define   rev(v)    reverse(v.begin() , v.end());
#define   sz(x)     (int)(x).size()
#define   all(x)    x.begin(), x.end()
#define  _cout(v)  for(auto f : v ) cout << f << " " ;
#define  _cin(v)   for(auto &it : v)cin >> it ;
#define  _for(v)   for(int i=0;i<(v);i++)
#define   PFD(n) cout.precision(n)<<fixed
#define gc getchar_unlocked
#define  vi vector<int>
#define  fs first
#define  sc second
const long double PI=3.14159265359;

//#define  int long long
void setIO(string name = "") {if(sz(name)){freopen((name+".in").c_str(), "r", stdin);
                                            freopen((name+".out").c_str(), "w", stdout);}}

void solve(){
   // Think twice code once
   int n,k;
   cin >> n >> k;
   vi a(n);
   _cin(a)
   sort(all(a));
   k--;
   int last = a[k] , ans = last;
   int num = 0, cur = -1e6;
   for (int i=k-1;i>=0;i--){
      last--;
      if (a[i]>last)cur=max(abs(a[i]-last),cur);
   }
   //debug(cur)
   if (cur!=-1e6)ans+=cur;
   cout << ans << '\n';
}
int32_t main() {
    IOS;
    int _=1;
    //cin>>_;
    for(int tc=1;tc<=_;tc++){
        // cout << "Case #" << tc << ": ";
        solve();
    }

}
Copy
Cutting Trees Anas_AbuAmar
GNU G++17
25 ms
644 KB
Accepted