কম্পিউটার

C++ এ দুটি শহরের সময়সূচী


ধরুন 2N ব্যক্তি আছে। একটি কোম্পানি একটি সাক্ষাৎকারের আয়োজন করতে চায়। I-তম ব্যক্তিকে শহর A তে যাওয়ার জন্য খরচ হল খরচ[i][0], এবং I-তম ব্যক্তিকে শহর B তে যাওয়ার খরচ হল খরচ[i][1]। প্রতিটি মানুষকে একটি শহরে যাওয়ার জন্য আমাদের ন্যূনতম খরচ খুঁজে বের করতে হবে, যেমন এন লোকেরা প্রতিটি শহরে আসে। সুতরাং যদি প্রদত্ত তালিকাটি [[10, 20], [30, 200], [400, 50], [30, 20]] হয় তাহলে আউটপুট হবে 110। তাই আমরা ব্যক্তি P1 কে 10 খরচ সহ শহর A-তে পাঠাব। , শহরের A থেকে দ্বিতীয় ব্যক্তি 30 টাকা, তৃতীয় এবং চতুর্থ ব্যক্তিকে শহরের B থেকে যথাক্রমে 50 এবং 20 খরচ।

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

  • n :=অ্যারের আকার
  • a :=n / 2 এবং b :=n / 2
  • অ্যারে সাজান, এবং উত্তর দিন :=0
  • এর জন্য i :=0 থেকে n – 1 −
    • যদি b =0 এবং অ্যারে[i, 0] <=array[i, 1] এবং a> 0 হয়, তাহলে
      • a 1 কমিয়ে দিন
      • উত্তর :=ans + অ্যারে[i, 0]
    • অন্যথায়
      • b 1 দ্বারা হ্রাস করুন
      • উত্তর :=ans + অ্যারে[i, 1]
  • উত্তর ফেরত দিন

উদাহরণ

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   static bool cmp(vector <int> a, vector <int> b){
      return abs(a[0] - a[1]) > abs(b[0] - b[1]);
   }
   int twoCitySchedCost(vector<vector<int>>& costs) {
      int n = costs.size();
      int a = n/2;
      int b = n/2;
      sort(costs.begin(), costs.end(), cmp);
      int ans = 0;
      for(int i = 0; i < n; i++){
         if(b == 0 || (costs[i][0] <= costs[i][1] && a > 0)){
            a--;
            //cout << a << " " << costs[i][0] << endl;
            ans += costs[i][0];
         } else {
            //cout << costs[i][1] << endl;
            b--;
            ans += costs[i][1];
         }
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<vector<int>> c = {{10,20},{30,200},{400,50},{30,20}};
   cout << ob.twoCitySchedCost(c);
}

ইনপুট

[[10,20],[30,200],[400,50],[30,20]]

আউটপুট

110

  1. C++ এ দুটি লিঙ্ক করা তালিকার ছেদ

  2. দুই যোগফল IV - ইনপুট হল C++ এ একটি BST

  3. C++ এ কাজের সময়সূচীতে সর্বোচ্চ লাভ

  4. C++ এ দুটি বাইনারি ট্রি মার্জ করুন