কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: ক্লক রিডিং জোড়ার মধ্যে সর্বোচ্চ সম্ভাব্য ন্যূনতম টাইম গ্যাপ

মান লিখুন: আমাদের কাছে 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
  1. ঘড়ির ঘন্টা ও মিনিটের কাঁটার কোণ বের করা C++-এ

  2. C++-এ বাইনারি ট্রি-এ দুটি নোডের দূরত্ব নির্ণয়

  3. C++-এ একটি বৃত্তের দুটি অংশের কোণের ন্যূনতম পার্থক্য বের করার প্রোগ্রাম

  4. পাইথনে ক্ষুদ্রতম গ্রুপের সর্বোচ্চ সম্ভাব্য মান খুঁজে বের করার প্রোগ্রাম