কম্পিউটার

C++ এ সর্বাধিক K জোড়া বেছে নিয়ে জোড়ার অ্যারের সর্বোচ্চ খরচ খুঁজুন


ধরুন আমাদের জোড়া A এর একটি অ্যারে আছে; সর্বাধিক K জোড়া নির্বাচন করার জন্য আমাদের সর্বোচ্চ খরচ খুঁজে বের করতে হবে। এই ক্ষেত্রে, জোড়া ধরনের উপাদানগুলির একটি বিন্যাসের মূল্য হল নির্বাচিত জোড়ার প্রথম উপাদানগুলির যোগফল এবং নির্বাচিত জোড়ার দ্বিতীয় উপাদানগুলির মধ্যে সবচেয়ে ছোট। উদাহরণ হিসেবে, যদি এই জোড়াগুলি (4, 8), (10, 3) এবং (3, 6) নির্বাচন করা হয়, তাহলে খরচ হবে (4+10+3)*(3) =51, K=3 এর জন্য

সুতরাং, যদি ইনপুট হয় A =[(15, 5), (65, 25), (35, 20), (20, 5), (35, 20), (15, 18), (3, 8) ), (12, 17)], K =4, তাহলে আউটপুট হবে 2700

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • res :=0, যোগফল =0

  • N :=A

    এর আকার
  • my_set

    নামে জোড়ার এক সেট সংজ্ঞায়িত করুন
  • প্রতিটি জোড়ার দ্বিতীয় মানের উপর ভিত্তি করে অ্যারে সাজান

  • আরম্ভ করার জন্য i :=N - 1, যখন i>=0, আপডেট করুন (i 1 দ্বারা কম করুন), −

    • একটি জোড়া তৈরি করুন (A[i], i এর প্রথম উপাদান) এবং my_set এ সন্নিবেশ করুন

    • যোগফল :=যোগফল + A[i]

      এর প্রথম উপাদান
    • my_set> K এর সাইজ করার সময় −

      করুন
      • এটা :=my_set

        এর প্রথম উপাদান
      • যোগফল :=যোগফল - এর প্রথমটি

      • my_set

        থেকে এটি মুছুন
    • res :=res এর সর্বোচ্চ এবং যোগফল * A[i>

      এর সেকেন্ড
  • রিটার্ন রিটার্ন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include নেমস্পেস ব্যবহার করে std;bool compactor(const pair&a,const pair&b) { রিটার্ন (a.second > &A, int K){ int res =0, যোগফল =0; int N =A.size(); সেট> my_set; sort(A.begin(), A.end(), compactor); জন্য (int i =N - 1; i>=0; --i) { my_set.insert(make_pair(A[i].first, i)); যোগফল +=A[i].প্রথম; যখন (my_set.size()> K) { auto it =my_set.begin(); যোগফল -=এটি->প্রথম; my_set.erase(এটি); } res =max(res, sum * A[i].second); } রিটার্ন res;}int main() { ভেক্টর> arr ={{ 15, 5}, { 65, 25}, { 35, 20}, { 20, 5}, { 35, 20 }, {15, 18}, {3, 8}, {12, 17}}; int K =4; cout < 

ইনপুট

<প্রে>{{15, 5},{65, 25}, { 35, 20}, { 20, 5}, { 35, 20}, { 15, 18}, { 3, 8}, {12, 17 }}, 4

আউটপুট

2700

  1. C++ এ সর্বাধিক পণ্যের চতুর্গুণ সংখ্যা খুঁজুন

  2. C++ ব্যবহার করে একটি অ্যারের মধ্যে একটি সংখ্যার ফ্রিকোয়েন্সি খুঁজুন।

  3. C++ এ একটি অ্যারেতে সর্বাধিক GCD সহ জোড়া খুঁজুন

  4. একটি গ্রাফে সর্বাধিক কাট খুঁজে পেতে C++ প্রোগ্রাম