#include<bits/stdc++.h>
using
namespace
std;
vector<string> consecutiveRanges(
int
a[],
int
n)
{
int
length = 1;
vector<string> list;
if
(n == 0)
{
return
list;
}
for
(
int
i = 1; i <= n; i++)
{
if
(i == n || a[i] - a[i - 1] != 1)
{
if
(length == 1)
{
list.push_back(to_string(a[i - length]));
}
else
{
string temp = to_string(a[i - length]) +
" -> "
+ to_string(a[i - 1]);
list.push_back(temp);
}
length = 1;
}
else
{
length++;
}
}
return
list;
}
int
main()
{
int
arr1[] = { 1, 2, 3, 6, 7 };
int
n =
sizeof
(arr1) /
sizeof
(arr1[0]);
vector<string> ans = consecutiveRanges(arr1, n);
cout <<
"["
;
for
(
int
i = 0; i < ans.size(); i++)
{
if
(i == ans.size() - 1)
cout << ans[i] <<
"]"
<< endl;
else
cout << ans[i] <<
", "
;
}
int
arr2[] = { -1, 0, 1, 2, 5, 6, 8 };
n =
sizeof
(arr2) /
sizeof
(arr2[0]);
ans = consecutiveRanges(arr2, n);
cout <<
"["
;
for
(
int
i = 0; i < ans.size(); i++)
{
if
(i == ans.size() - 1)
cout << ans[i] <<
"]"
<< endl;
else
cout << ans[i] <<
", "
;
}
int
arr3[] = { -1, 3, 4, 5, 20, 21, 25 };
n =
sizeof
(arr3) /
sizeof
(arr3[0]);
ans = consecutiveRanges(arr3, n);
cout <<
"["
;
for
(
int
i = 0; i < ans.size(); i++)
{
if
(i == ans.size() - 1)
cout << ans[i] <<
"]"
<< endl;
else
cout << ans[i] <<
", "
;
}
}