দুটি অ্যারে A (সাইজ n) এবং B (সাইজ m), আর একটি সংখ্যা r দেওয়া আছে। nটি শেয়ার কেনার সুযোগ আছে, i-তম সুযোগে A[i] দামে যত চাই শেয়ার কেনা যায়। mটি শেয়ার বেচার সুযোগ আছে, i-তম সুযোগে B[i] দামে বেচা যায়। হাতে থাকা শেয়ারের চেয়ে বেশি বেচা যাবে না। প্রাথমিক টাকা r এবং শেয়ার ০। কেনা-বেচার পর সর্বোচ্চ কত টাকা থাকবে তা বের করতে হবে।
উদাহরণ
A = [4, 2, 5], B = [4, 4, 5, 4], r = 11 → আউটপুট: 26
ব্যাখ্যা: ১১ টাকায় ২ টাকা দামে ৫টি শেয়ার কিনে ৫ টাকা দামে বেচলে মোট ২৬ টাকা হয়।
সমাধানের ধাপসমূহ
n := A-এর সাইজ
an := 1100, bn := 0
for i := 0 to n-1: if an > A[i] then an := A[i]
for i := 0 to m-1: if bn < B[i] then bn := B[i]
if bn > an:
r := bn * (r / an) + (r - (r / an) * an)
return r
সি++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A, vector<int> B, int r) {
int n = A.size(), m = B.size();
int an = 1100, bn = 0;
for (int i = 0; i < n; i++)
if (an > A[i]) an = A[i];
for (int i = 0; i < m; i++)
if (bn < B[i]) bn = B[i];
if (bn > an) {
r = bn * (r / an) + (r - (r / an) * an);
}
return r;
}
int main() {
vector<int> A = {4, 2, 5};
vector<int> B = {4, 4, 5, 4};
int r = 11;
cout << solve(A, B, r) << endl;
}
ইনপুট
{ 4, 2, 5 }, { 4, 4, 5, 4 }, 11
আউটপুট
26