मान लीजिए हमारे पास N तत्वों वाला एक ऐरे D है। एक कोड फेस्टिवल में अमल सहित N+1 प्रतिभागी हैं। अमल ने जांचा और पाया कि उसके शहर में स्थानीय समय और iवें व्यक्ति के शहर में स्थानीय समय के बीच का समय अंतर D[i] घंटे था। दो शहरों के बीच समय अंतर: किन्हीं दो शहरों A और B के लिए, यदि शहर B में स्थानीय समय शहर A में स्थानीय समय 0 बजे होने के क्षण में d बजे है, तो इन दो शहरों के बीच समय अंतर d और 24-d घंटे का न्यूनतम है।
यहां, हम 24-घंटे संकेतन का उपयोग कर रहे हैं। फिर, N+1 लोगों में से चुने गए प्रत्येक दो लोगों के युग्म के लिए, उसने उनके शहरों के बीच समय अंतर लिख दिया। उनमें से सबसे छोटे समय अंतर को s घंटे मान लें। हमें s का अधिकतम संभव मान ढूंढना है।
उदाहरण के लिए, यदि इनपुट D = [7, 12, 8] है, तो आउटपुट 4 होगा, क्योंकि दूसरे और तीसरे व्यक्तियों के शहरों के बीच समय अंतर 4 घंटे है।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
n := D का आकार ऐरे D को सॉर्ट करें एक ऐरे t परिभाषित करें 0 को t के अंत में डालें i := 0 से n-1 तक, करें: यदि i mod 2, 0 के बराबर है, तो: D[i] को t के अंत में डालें अन्यथा 24 - D[i] को t के अंत में डालें ऐरे t को सॉर्ट करें ans := inf i := 1 से t के आकार-1 तक, करें: ans := ans और t[i] - t[i - 1] का न्यूनतम ans वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#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