# REACHCMR-Editorial

Practice
Setter: Charan Narukulla
Tester: Abhilash Movva

Easy

Math,Sorting

# PROBLEM:

You are going to your college via bike/scooter/car. You need to increase your speed to reach the college as soon as possible. Your speed right now is divided into N parts with their values S(i) (given). You can increase your speed X number of times by increasing any value by S(i)/2. Consider floor value if the speed is odd. You always try to increase the speed very few times and speed to be high. You can’t change the speed more than N times and can’t change the same speed again. Finally, you need to maintain the total speed ≥40 to reach the college on time. Print minimum number of times you need to change the speed, total speed, YES if you can reach the college on time else NO.

# EXPLANATION:

Take the speed divisions and sort them in descending order. This gives us the minimum number of changes needed. Increase each value by S(i)/2 and add excess value obtained to the sum of the speeds. if sum of the speeds is ≥40 initially the number of changes =0. break the process until this condition is met. if this condition never become true for the given set of speeds then its not possible to reach on time.

Setter's Solution

using namespace std;
int main() {
int T;
cin>>T;
while(T–){
int N;
cin>>N;
int speed[N];
int totalspeed=0;
for(int i=0;i<N;i++){
cin>>speed[i];
totalspeed+=speed[i];

``````    }
if(totalspeed>=40){
std::cout << 0<<" "<<totalspeed<<" "<<"YES" << std::endl;

}
else{
sort(speed,speed+N,greater<int>());
int X=0;
for(int i=0;i<N;i++){
int ic=speed[i]/2;
X++;
totalspeed+=ic;
if(totalspeed>=40)
break;

}
if(totalspeed>=40)
std::cout << X<<" "<<totalspeed<<" YES" << std::endl;
else
std::cout << X<<" "<<totalspeed<<" NO" << std::endl;

}

}
return 0;
``````

}

Tester's Solution

#include <bits/stdc++.h>
using namespace std;

int main(){
int t;
cin >> t;
while(t–){
int n,sum=0;
cin >> n;
int s[n];
for(int i=0; i<n; i++){
cin >> s[i];
sum += s[i];
}
if(sum>=40){
cout << “0” << " " << sum << " " << “YES\n”;
}
else{
sort(s, s+ n, greater());
int cnt=0;
for(int i=0; i<n; i++){
int t = s[i] / 2;
if(t%2!=0) floor(t);
sum+=t;
cnt++;
if(sum>=40) break;
}
if(sum>=40) cout << cnt << " " << sum << " " << “YES\n”;
else cout << cnt << " " << sum << " " << “NO\n”;
}

``````}
return 0;
``````

}