My issue
Code 1
#include <iostream>
#include <bits/stdc++.h>
#include <cmath>
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
int arr[n];
for(int i=0;i<n;i++){
cin>>arr[i];
}
sort(arr, arr+n);
int count=0;
for(int i=0;i<n;i++){
k-=arr[i];
count=i;
if(k<=0){
k+=arr[i];
k-= ceil(double(arr[i])/2.00);
if(k<=0){
count-=1;
break;
}
}
}
cout << count+1 << endl;
}
return 0;
}
Code 2 :
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int t,n,k,count;
cin>>t;
while(t--){
count=0;
cin>>n>>k;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
for(int i=0;i<n;i++){
if(k>=a[i]){
k=k-a[i];
count++;
}
else{
if(k>=(a[i]+1)/2){
count++;
break;
}
}
}
cout << count << endl;
}
return 0;
}
Please Tell me why code 1 fails but code 2 passes while both uses the same logic just in two different ways.
Problem Link: CodeChef: Practical coding for everyone