using
System;
using
System.Collections.Generic;
public
class
Pair : IComparable<Pair> {
public
int
first, second;
public
Pair(
int
first,
int
second)
{
this
.first = first;
this
.second = second;
}
public
override
int
GetHashCode()
{
return
31 * first + second;
}
public
override
bool
Equals(Object p)
{
Pair pair = (Pair)p;
if
(
this
.first != pair.first)
return
false
;
return
this
.second == pair.second;
}
public
int
CompareTo(Pair p)
{
if
(
this
.first == p.first) {
return
this
.second - p.second;
}
return
this
.first - p.first;
}
}
public
class
GFG {
static
HashSet<Pair> Pairs(
int
[] arr)
{
HashSet<Pair> pairs =
new
HashSet<Pair>();
for
(
int
i = 0; i < arr.Length - 1; ++i) {
int
maximum = Math.Max(arr[i], arr[i + 1]),
secondmax = Math.Min(arr[i], arr[i + 1]);
for
(
int
j = i + 1; j < arr.Length; ++j) {
if
(arr[j] > maximum) {
secondmax = maximum;
maximum = arr[j];
}
if
(arr[j] < maximum
&& arr[j] > secondmax) {
secondmax = arr[j];
}
pairs.Add(
new
Pair(secondmax, maximum));
}
}
return
pairs;
}
public
static
void
Main(String[] args)
{
int
[] vec = { 1, 2, 6, 4, 5 };
HashSet<Pair> st = Pairs(vec);
Console.WriteLine(
"Total Number of "
+
"valid pairs is :"
+ st.Count);
foreach
(Pair x
in
st) {
Console.WriteLine(
"({0}, {1})"
,
x.first, x.second);
}
}
}