ধরুন একটি লাইনে n সৈন্যরা দাঁড়িয়ে আছে। এখানে প্রতিটি সৈনিক একটি অনন্য রেটিং মান বরাদ্দ করা হয়. নিম্নলিখিত নিয়মগুলি ব্যবহার করে আমাদের 3 জন সৈন্যের একটি দল তৈরি করতে হবে -
সূচক (i, j, k) সহ 3 জন সৈন্য চয়ন করুন যাতে রেটিং (রেটিং[i], রেটিং[j], রেটিং[k])।
একটি দল বৈধ হবে যদি − (রেটিং[i] <রেটিং[j] <রেটিং[k]) বা (রেটিং[i]> রেটিং[j]> রেটিং[k])।
আমরা কয়টি দল গঠন করতে পারি তা খুঁজে বের করতে হবে। (সৈন্যরা একাধিক দলের অংশ হতে পারে)।
সুতরাং, যদি ইনপুট রেটিং =[2,5,3,4,1] এর মত হয়, তাহলে আউটপুট হবে 3, যেমন আমরা তিনটি দল গঠন করতে পারি যেমন (2,3,4), (5,4,1) , (5,3,1)।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ret :=0, n :=v
এর আকার -
আরম্ভ করার জন্য i :=0, যখন i
-
j শুরু করার জন্য :=i + 1, যখন j
করুন -
আরম্ভ করার জন্য k :=j + 1, যখন k
-
যদি v[i]
-
(রেট 1 দ্বারা বৃদ্ধি করুন)
-
-
অন্যথায় যখন v[i]> v[j] এবং v[j]> v[k], তারপর −
-
(রেট 1 দ্বারা বৃদ্ধি করুন)
-
-
-
-
-
রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; class Solution { public: int numTeams(vector<int>& v) { int ret = 0; int n = v.size(); for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { if (v[i] < v[j] && v[j] < v[k]) ret++; else if (v[i] > v[j] && v[j] > v[k]) ret++; } } } return ret; } }; main(){ Solution ob; vector<int> v = {2,5,3,4,1}; cout << (ob.numTeams(v)); }
ইনপুট
{2,5,3,4,1}
আউটপুট
3