একটি অ্যারে A (n উপাদান) এবং একটি সংখ্যা H দেওয়া আছে। H = শত্রুর হেলথ। nটি হথিয়ার আছে, i-তম হথিয়ারের ড্যামেজ A[i]। ভিন্ন হথিয়ার দিয়ে শত্রু হত্যা করতে হবে। একই হথিয়ার দুবার পরপর ব্যবহার করা যাবে না। শত্রু হত্যা করতে ন্যূনতম কতবার হথিয়ার ব্যবহার করতে হবে তা বের করতে হবে।
উদাহরণ
A=[2,1,7], H=11 → আউটপুট: 3
ব্যাখ্যা: ৭ ড্যামেজ, তারপর ২, আবার ৭ — মোট ৩ বার।
সমাধানের ধাপসমূহ
sort(A) n := A.size() x := A[n-1] + A[n-2] return H/x * 2 + (H%x + A[n-1] - 1) / A[n-1]
সি++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A, int H) {
sort(A.begin(), A.end());
int n = A.size();
int x = A[n-1] + A[n-2];
return H/x * 2 + (H%x + A[n-1] - 1) / A[n-1];
}
int main() {
vector<int> A = {2, 1, 7};
int H = 11;
cout << solve(A, H) << endl;
}
ইনপুট
{ 2, 1, 7 }, 11
আউটপুট
3