# Count triplet pairs (A, B, C) of points in 2-D space that satisfy the given condition

Given N points in 2 dimensional space. The task is to count the number of triplets pairs (A, B, C) such that point B is the midpoint of line segment formed by joining points A and C.

Examples:

Input: points = {{1, 1}, {2, 2}, {3, 3}}
Output: 1
The point (2, 2) is the midpoint of the line segment joining points (1, 1) and (3, 3).

Input: points = {{1, 1}, {1, 2}, {1, 5}}
Output: 0

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Consider a pair of points A and C. The midpoint of the line segment joining these points will be ((A * X + C * X) / 2, (A * Y + C * Y) / 2)). If the point is present in the given list of points, we have found a triplet. To quickly check if a point is in our list of points we can use a set. Doing this for all pairs of points will give us the required count.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Function to return the count of possible triplets ` `int` `countTriplets(``int` `n, vector > points) ` `{ ` `    ``set > pts; ` `    ``int` `ct = 0; ` ` `  `    ``// Insert all the points in a set ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``pts.insert(points[i]); ` ` `  `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``for` `(``int` `j = i + 1; j < n; j++) { ` `            ``int` `x = points[i].first + points[j].first; ` `            ``int` `y = points[i].second + points[j].second; ` ` `  `            ``// If the mid point exists in the set ` `            ``if` `(x % 2 == 0 && y % 2 == 0) ` `                ``if` `(pts.find(make_pair(x / 2, y / 2)) ` `                    ``!= pts.end()) ` `                    ``ct++; ` `        ``} ` ` `  `    ``// Return the count of valid triplets ` `    ``return` `ct; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``vector > points ` `        ``= { { 1, 1 }, { 2, 2 }, { 3, 3 } }; ` `    ``int` `n = points.size(); ` `    ``cout << countTriplets(n, points); ` `} `

## Python3

 `# Python3 implementation of the approach  ` ` `  `# Function to return the count  ` `# of possible triplets  ` `def` `countTriplets(n, points) : ` `     `  `    ``pts ``=` `[]  ` `    ``ct ``=` `0``;  ` ` `  `    ``# Insert all the points in a set  ` `    ``for` `i ``in` `range``(n) : ` `        ``pts.append(points[i]);  ` ` `  `    ``for` `i ``in` `range``(n) : ` `        ``for` `j ``in` `range``(i ``+` `1``, n) :  ` `            ``x ``=` `points[i][``0``] ``+` `points[j][``0``];  ` `            ``y ``=` `points[i][``1``] ``+` `points[j][``1``];  ` ` `  `            ``# If the mid point exists in the set  ` `            ``if` `(x ``%` `2` `=``=` `0` `and` `y ``%` `2` `=``=` `0``) : ` `                ``if` `[x ``/``/` `2``, y ``/``/` `2``] ``in` `pts : ` `                    ``ct ``+``=` `1` `                     `  `    ``# Return the count of valid triplets  ` `    ``return` `ct  ` ` `  `# Driver code  ` `if` `__name__ ``=``=` `"__main__"` `: ` `     `  `    ``points ``=` `[[ ``1``, ``1` `], [ ``2``, ``2` `], [ ``3``, ``3` `]] ` `    ``n ``=` `len``(points)  ` `    ``print``(countTriplets(n, points)) ` ` `  `# This code is contributed by Ryuga `

Output:

```1
```

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.