ধরুন আমাদের কাছে টিভি শোগুলির একটি তালিকা এবং সময়কালের আরেকটি তালিকা এবং একটি পূর্ণসংখ্যা k, এখানে দেখায় [i] এবং সময়কাল[i] ith দ্বারা দেখা নাম এবং সময়কাল দেখায় ব্যক্তি, আমাদের k সর্বাধিক দেখা শোগুলির মোট সময়কাল খুঁজে বের করতে হবে৷
সুতরাং, ইনপুটটি যদি শোগুলির মতো হয়:["ক্যাসল প্লে", "ফেয়ারি টেল সিরিজ", "ক্যাসল প্লে", "জেরি মাউস", "রিচ বয়"], সময়কাল:[6, 4 , 6, 14, 5] এবং k =2, তাহলে আউটপুট হবে 26।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি মানচিত্র m
সংজ্ঞায়িত করুন -
n :=v
এর আকার -
আরম্ভ করার জন্য i :=0, যখন i
-
m[v[i]] :=m[v[i]] + d[i]
-
-
একটি অ্যারে অ্যারে সংজ্ঞায়িত করুন
-
প্রতিটি কী-মানের জোড়ার জন্য এটি m
-
arr
এর শেষে এর মান সন্নিবেশ করান
-
-
অ্যারে অ্যারের বিপরীত ক্রমে সাজান
-
ret :=0
-
আরম্ভ করার জন্য i :=0, যখন i
-
ret :=ret + arr[i]
-
-
রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#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));
} ইনপুট
{"Castle Play", "Fairy Tale Series", "Castle Play", "Jerry Mouse",
"Rich Boy"}, {6, 4, 6, 14, 5}, 2 আউটপুট
26