ধরুন একটি লাইনে 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