Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count Number of Teams in C++
Suppose there are n soldiers standing in a line. Here each soldier is assigned a unique rating value. We have to make a team of 3 soldiers amongst them using the following rules −
Choose 3 soldiers with index (i, j, k) such that the rating (rating[i], rating[j], rating[k]).
A team will be valid if − (rating[i] < rating[j] < rating[k]) or (rating[i] > rating[j] > rating[k]).
We have to find the number of teams we can form. (soldiers can be part of multiple teams).
So, if the input is like rating = [2,5,3,4,1], then the output will be 3, as we can form three teams like (2,3,4), (5,4,1), (5,3,1).
To solve this, we will follow these steps −
ret := 0, n := size of v
-
for initialize i := 0, when i < n, update (increase i by 1), do −
-
for initialize j := i + 1, when j < n, update (increase j by 1), do −
-
for initialize k := j + 1, when k < n, update (increase k by 1), do −
-
if v[i] < v[j] and v[j] < v[k], then −
(increase ret by 1)
-
otherwise when v[i] > v[j] and v[j] > v[k], then −
(increase ret by 1)
-
-
-
return ret
Example
Let us see the following implementation to get better understanding −
#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));
}
Input
{2,5,3,4,1}
Output
3