n জোড়া বক্স একটি বর্গাকার কন্টেইনারে পাঠাতে হবে। প্রতিটি জোড়ার প্রস্থ (a, b) হিসেবে দেওয়া আছে 'dimensions' আরে। বক্স দুটির প্রস্থ সমান্তরাল রাখলে কন্টেইনারের ভিতরে কত জায়গা নেবে তা বের করতে হবে। বক্সগুলো স্ট্যাক করা যাবে না। প্রতিটি জোড়ার জন্য ন্যূনতম আয়তন বের করতে হবে।
সমাধানের ধাপসমূহ
প্রতিটি জোড়ার জন্য: ছোট প্রস্থটি ২ গুণ করুন এবং বড় প্রস্থটির সাথে তুলনা করুন। এই দুটির মধ্যে সর্বোচ্চ মান বর্গ করলে ন্যূনতম আয়তন मिलবে। অর্থাৎ max(2×min(a,b), max(a,b))²।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
void solve(int n, vector<pair<int, int>> dimensions) {
int res = 0;
while(n--) {
int a = dimensions[n].first;
int b = dimensions[n].second;
int side = max(2 * min(a, b), max(a, b));
cout << side * side << endl;
}
}
int main() {
int n = 4;
vector<pair<int, int>> dimensions = {{2, 4}, {3, 6}, {2, 5}, {4, 6}};
solve(n, dimensions);
return 0;
}
ইনপুট
4, {{2, 4}, {3, 6}, {2, 5}, {4, 6}}
আউটপুট
64 25 36 16
ব্যাখ্যা
প্রথম জোড়া (2,4): max(4,4)=4, ৪²=১৬। দ্বিতীয় (3,6): max(6,6)=6, ৬²=৩৬। তৃতীয় (2,5): max(4,5)=5, ৫²=২৫। চতুর্থ (4,6): max(8,6)=8, ৮²=৬৪। আউটপুট উল্টে ক্রমে আসে কারণ স্ট্যাক থেকে পপ করা হয়েছে।