মান লিখুন: আমাদের কাছে N উপাদান বিশিষ্ট একটি অ্যারে D রয়েছে। একটি কোড ফestiwalে N+1জন অংশগ্রহকারী আছে আমলসহ। আমল দেখল যে তার শহরের লোকাল টাইম এবং i-তম ব্যক্তির শহরের লোকাল টাইমের মধ্যে টাইম গ্যাপ D[i] ঘন্টা। দুটি শহরের টাইম গ্যাপ: যদি শহর B-র লোকাল টাইম d বজে যখন শহর A-র লোকাল টাইম ০ বজে, তবে টাইম গ্যাপ হল min(d, 24-d) ঘন্টা। এখানে ২৪-ঘন্টার ফরম্যাট ব্যবহার করা হয়েছে। তারপর N+1 জনের মাঝ থেকে প্রতিটি জোড়ার টাইম গ্যাপ লিখল। उनमे সবচেয়ে ছোট টাইম গ্যাপ s ঘন্টা। s-এর সর্বোচ্চ সম্ভাব্য মান বের করতে হবে।
উদাহরণ
যদি ইনপুট হয় D = [7, 12, 8], তবে আউটপুট হবে 4, কারণ দ্বিতীয় ও তৃতীয় ব্যক্তির শহরের টাইম গ্যাপ ৪ ঘন্টা।
সমাধানের ধাপসমূহ
n := D এর আকার
D সর্ট করুন
t অ্যারে, ০ ইনসার্ট করুন
for i := 0 থেকে n-1:
যদি i%2==0: t-এ D[i] ইনসার্ট করুন
অন্যথায়: t-এ 24-D[i] ইনসার্ট করুন
t সর্ট করুন
ans := infinity
for i := 1 থেকে t.size()-1:
ans := min(ans, t[i] - t[i-1])
ans রিটার্ন করুন
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> D) {
int n = D.size();
sort(D.begin(), D.end());
vector<int> t;
t.push_back(0);
for (int i = 0; i < n; i++) {
if (i % 2 == 0) t.push_back(D[i]);
else t.push_back(24 - D[i]);
}
sort(t.begin(), t.end());
int ans = 1e9;
for (int i = 1; i < t.size(); i++)
ans = min(ans, t[i] - t[i - 1]);
return ans;
}
int main() {
vector<int> D = { 7, 12, 8 };
cout << solve(D) << endl;
}
ইনপুট
{ 7, 12, 8 }
আউটপুট
4