কম্পিউটার

প্রদত্ত ক্রিয়াকলাপগুলির সাথে প্রতিটি শহর থেকে আমরা পরিদর্শন করতে পারি এমন শহরগুলির সংখ্যা গণনা করার জন্য C++ প্রোগ্রাম


ধরুন আমাদের ফর্মে N স্থানাঙ্ক বিন্দু P এর একটি তালিকা রয়েছে (xi, yi)। x এবং y মান হল প্রথম N প্রাকৃতিক সংখ্যার স্থানান্তর। 1 থেকে N পর্যন্ত প্রতিটি k-এর জন্য। আমরা শহর k-এ আছি। আমরা অনেক সময় ইচ্ছামত অপারেশন প্রয়োগ করতে পারি। অপারেশন:আমরা অন্য একটি শহরে চলে যাই যেখানে একটি ছোট x-স্থানাঙ্ক এবং একটি ছোট y-সমন্বয় বা বড় x বা বড় y স্থানাঙ্ক রয়েছে আমরা বর্তমানে যে শহরে আছি। .

সুতরাং, যদি ইনপুট হয় P =[[1, 4], [2, 3], [3, 1], [4, 2]], তাহলে আউটপুট হবে [1, 1, 2, 2]

পদক্ষেপ

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

n := size of P
Define one 2D array lst
for initialize i := 0, when i < n, update (increase i by 1), do:
   v := { P[i, 0], P[i, 1], i }
   insert v at the end of lst
sort the array lst
y_min := 1e9
Define one set se
Define an array ans of size n and fill with 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   y_min := minimum of y_min and lst[i, 1]
   insert lst[i, 2] into se
   if y_min + i is same as n, then:
      for each element j in se
         ans[j] := size of se
      clear the set se
   if i is same as n - 1, then:
      for each element j in se
         ans[j] := size of se
for initialize i := 0, when i < n, update (increase i by 1), do:
   display ans[i]

উদাহরণ

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

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

void solve(vector<vector<int>> P){
   int n = P.size();
   vector<vector<int>> lst;
   for (int i = 0; i < n; i++){
      vector<int> v = { P[i][0], P[i][1], i };
      lst.push_back(v);
   }
   sort(lst.begin(), lst.end());
   int y_min = 1e9;
   set<int> se;
   vector<int> ans(n, 0);
   for (int i = 0; i < n; i++){
      y_min = min(y_min, lst[i][1]);
      se.insert(lst[i][2]);
      if (y_min + i == n){
         for (auto j : se)
            ans[j] = se.size();
         se.clear();
      }
      if (i == n - 1){
         for (auto j : se)
            ans[j] = se.size();
      }
   }
   for (int i = 0; i < n; i++){
      cout << ans[i] << ", ";
   }
}
int main(){
   vector<vector<int>> P = { { 1, 4 }, { 2, 3 }, { 3, 1 }, { 4, 2 } };
   solve(P);
}

ইনপুট

{ { 1, 4 }, { 2, 3 }, { 3, 1 }, { 4, 2 } }

আউটপুট

1, 1, 2, 2,

  1. ডোডেকাগনের সংখ্যা গণনা করার জন্য C++ প্রোগ্রাম আমরা d এর আকার তৈরি করতে পারি

  2. C++ এ বাইনারি ম্যাট্রিক্সকে শূন্য ম্যাট্রিক্সে রূপান্তর করতে অপারেশনের সংখ্যা গণনা করার প্রোগ্রাম

  3. C++ এ একটি প্রদত্ত পরিধি সহ সম্ভাব্য সমকোণী ত্রিভুজের সংখ্যা গণনা করুন

  4. C++ এ প্রদত্ত অনুপাত থেকে প্রতিটি ধরণের কয়েনের গণনা খুঁজে বের করার প্রোগ্রাম