class
GFG {
static
public
int
[,] Sort_By_Column(
int
[,] array,
int
[,] sort_directive)
{
int
array_rows = array.GetLength(0);
int
array_columns = array.Length/array_rows;
int
sort_directive_columns = sort_directive.GetLength(0);
for
(
int
i=0;i<array_rows-1;i++)
{
for
(
int
j=i+1;j<array_rows;j++)
{
for
(
int
c=0;c<sort_directive_columns;c++)
{
if
(sort_directive[c,1]==-1 &&
array[i,sort_directive[c,0]].CompareTo(array[j,sort_directive[c,0]])<0)
{
for
(
int
d=0;d<array_columns;d++)
{
int
h = array[j,d];
array[j,d]=array[i,d];
array[i,d]=h;
}
break
;
}
else
if
(sort_directive[c,1]==-1 &&
array[i,sort_directive[c,0]].CompareTo(array[j,sort_directive[c,0]])>0)
break
;
else
if
(sort_directive[c,1]==1 &&
array[i,sort_directive[c,0]].CompareTo(array[j,sort_directive[c,0]])>0)
{
for
(
int
d=0;d<array_columns;d++)
{
int
h = array[j,d];
array[j,d]=array[i,d];
array[i,d]=h;
}
break
;
}
else
if
(sort_directive[c,1]==1 &&
array[i,sort_directive[c,0]].CompareTo(array[j,sort_directive[c,0]])<0)
break
;
}
}
}
return
array;
}
static
public
int
cntMinSteps(
int
[,]arr,
int
N)
{
int
cntSteps = 1;
int
[,] SORT_DIRECTIVE=
new
int
[1,2]{
{1, 1}
};
Sort_By_Column(arr, SORT_DIRECTIVE);
int
Points = arr[0,1];
for
(
int
i = 0; i < N; i++) {
if
(arr[i,0] > Points) {
cntSteps = cntSteps + 1;
Points = arr[i,1];
}
}
return
cntSteps;
}
static
void
Main()
{
int
[,] arr =
new
int
[,]{ { 9, 15 },
{ 3, 8 },
{ 1, 6 },
{ 7, 12 },
{ 5, 10 } };
int
N = arr.GetLength(0);
System.Console.WriteLine(cntMinSteps(arr, N));
}
}