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

C++-এ টিভি শো দর্শনের সময় গণনা: টপ-K শো

টিভি শোদের তালিকা, প্রতিটি ব্যক্তির দেখা সময় এবং একটি সংখ্যা k দেওয়া আছে। সবচেয়ে বেশি দেখা করা kটি শোর মোট দর্শনের সময় বের করতে হবে।

উদাহরণ

শো: ["Castle Play", "Fairy Tale Series", "Castle Play", "Jerry Mouse", "Rich Boy"]

সময়: [6, 4, 6, 14, 5], k = 2

"Castle Play" মোট ১২ মিনিট, "Jerry Mouse" ১৪ মিনিট দেখা হয়েছে। টপ-২-এর মোট = ১২ + ১৪ = 26।

সমাধানের পদ্ধতি

  1. একটি ম্যাপ ব্যবহার করে প্রতিটি শোর মোট দর্শনের সময় জমা করুন।
  2. সময়গুলো একটি ভেক্টরে নিয়ে নেমিক ক্রমে সাজান।
  3. প্রথম kটি সময়ের যোগফল বের করুন।

C++ বাস্তবায়ন

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int solve(vector<string>& v, vector<int>& d, int k) {
        map<string, int> m;
        int n = v.size();
        for (int i = 0; i < n; i++)
            m[v[i]] += d[i];
        
        vector<int> arr;
        for (auto& it : m)
            arr.push_back(it.second);
        
        sort(arr.rbegin(), arr.rend());
        
        int ret = 0;
        for (int i = 0; i < k; i++)
            ret += arr[i];
        return ret;
    }
};

int main() {
    vector<string> v = {"Castle Play", "Fairy Tale Series", "Castle Play", "Jerry Mouse", "Rich Boy"};
    vector<int> v1 = {6, 4, 6, 14, 5};
    Solution ob;
    cout << ob.solve(v, v1, 2);
    return 0;
}

ইনপুট ও আউটপুট

ইনপুট: শো তালিকা, সময় তালিকা, k=2

আউটপুট: 26

সময় জটিলতা

O(n log n) - ম্যাপে ইনসারশন এবং সোর্টিং-এর জন্য।

  1. C++-এ ডায়াগোনাল ট্রায়ভার্স II

  2. প্রসেস কিল করা (Kill Process) C++-এ

  3. স্কোয়ারেল সিমুলেশন (Squirrel Simulation) C++-এ

  4. C++-এ আয়তাকার এলাকা II (Rectangle Area II) সমাধান