My issue
include
#include<bits/stdc++.h>
using namespace std;
int main() {
int t;cin>>t;
while(t–){
int n,k;cin>>n>>k;
vectorv(n);
for(int i=0;i<n;i++){
cin>>v[i];
}
sort(v.begin(),v.end());
int ans;
if(v[0]<=k){k=k-v[0];}
else {ans=k;k=-1;}
for(int i=1;i<n && k>=0;i++){
if(v[i]-v[i-1]-1<=k){k-=(v[i]-v[i-1]-1);}
else{ans=v[i-1]+1+k;k=-1;}
}
if(k>=0){ans=v[v.size()-1]+k+1;}
cout<<ans<<endl;
}
return 0;
}
Can someone help me find what am I missing? It’s partially correct. I am missing a corner case;
My code
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main() {
int t;cin>>t;
while(t--){
int n,k;cin>>n>>k;
vector<int>v(n);
for(int i=0;i<n;i++){
cin>>v[i];
}
sort(v.begin(),v.end());
int ans;
if(v[0]<=k){k=k-v[0];}
else {ans=k;k=-1;}
for(int i=1;i<n && k>=0;i++){
if(v[i]-v[i-1]-1<=k){k-=(v[i]-v[i-1]-1);}
else{ans=v[i-1]+1+k;k=-1;}
}
if(k>=0){ans=v[v.size()-1]+k+1;}
cout<<ans<<endl;
}
return 0;
}
Learning course: Jump from 2* to 3*
Problem Link: CodeChef: Practical coding for everyone