import
java.util.*;
class
GFG {
public
static
int
CountSubintervals(List<List<Integer> > Intervals,
int
time)
{
Collections.sort(
Intervals,
new
Comparator<List<Integer> >() {
public
int
compare(List<Integer> a,
List<Integer> b)
{
return
a.get(
0
) - b.get(
0
);
}
});
List<Integer> dp
=
new
ArrayList<>(Collections.nCopies(
time +
1
, Integer.MAX_VALUE -
1
));
dp.set(
0
,
0
);
for
(
int
i =
1
; i <= time; i++) {
for
(List<Integer> interval : Intervals) {
if
(interval.get(
0
) <= i
&& i <= interval.get(
1
)) {
dp.set(i,
Math.min(dp.get(i),
dp.get(interval.get(
0
))
+
1
));
}
}
}
return
dp.get(time) == Integer.MAX_VALUE -
1
? -
1
: dp.get(time);
}
public
static
void
main(String[] args)
{
List<List<Integer> > Intervals = Arrays.asList(
Arrays.asList(
0
,
1
), Arrays.asList(
6
,
8
),
Arrays.asList(
0
,
2
), Arrays.asList(
5
,
6
),
Arrays.asList(
0
,
4
), Arrays.asList(
0
,
3
),
Arrays.asList(
6
,
7
), Arrays.asList(
1
,
3
),
Arrays.asList(
4
,
7
), Arrays.asList(
1
,
4
),
Arrays.asList(
2
,
5
), Arrays.asList(
2
,
6
),
Arrays.asList(
3
,
4
), Arrays.asList(
4
,
5
),
Arrays.asList(
5
,
7
), Arrays.asList(
6
,
9
));
int
timeDuration =
9
;
int
result
= CountSubintervals(Intervals, timeDuration);
System.out.println(result);
}
}