একটি ফ্লোর n সারি এবং m কলামের গ্রিডে ভাগ করা আছে। ল্যাম্প দিয়ে পুরো ফ্লোর আলোকিত করতে হবে। ল্যাম্প যদি দুটি সেলের বর্ডারে রাখা হয়, তবে এটি দুটি সেল আলোকিত করে। ভertetrical বর্ডারে থাকলে বাম ও ডান পাশের সেল দুটি, horizontal বর্ডারে থাকলে সামনে ও পেছনের সেল দুটি আলোকিত হয়। পুরো ফ্লোর আলোকিত করার জন্য ন্যূনতম কতটি ল্যাম্প লাগবে তা বের করতে হবে।
সমাধানের ধাপসমূহ
প্রতিটি ল্যাম্প ২টি সেল আলোকিত করে। মোট সেলের সংখ্যা n×m। অতএব ন্যূনতম ল্যাম্পের সংখ্যা হবে (n×m + 1) / 2 (সিলিং ভ্যালু)।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(int n, int m) {
int res = (n * m + 1) / 2;
return res;
}
int main() {
int n = 5, m = 3;
cout << solve(n, m);
return 0;
}
ইনপুট
5, 3
আউটপুট
8
ব্যাখ্যা
5×3 = ১৫টি সেল। (১৫+১)/২ = ৮টি ল্যাম্প দরকার।