You are given n activities with their start and finish times. Select the maximum number of activities that can be performed by a single person, assuming that a person can only work on a single activity at a time.
Examples:
Example 1 : Consider the following 3 activities sorted by
by finish time.
start[] = {10, 12, 20};
finish[] = {20, 25, 30};
A person can perform at most two activities. The
maximum set of activities that can be executed is {0, 2}
[ These are indexes in start[] and finish[] ]
Example 2 : Consider the following 6 activities sorted by by finish time.
start[] = {1, 3, 0, 5, 8, 5};
finish[] = {2, 4, 6, 7, 9, 9};
A person can perform at most four activities. The maximum set of activities
that can be executed is {0, 1, 3, 4} [ These are indexes in start[] and finish[] ]
classpair {long start;long end;}classMain {publicstaticvoidmain(String[] args) {Scanner s =newScanner(System.in);int n =s.nextInt(); pair[] arr =new pair[n];for (int i =0; i < n; i++) { pair p =newpair();p.start=s.nextInt();p.end=s.nextInt(); arr[i] = p; }Arrays.sort(arr, (a, b) -> (int) (a.end-b.end));int ans =0;long end_time =0;for (int j =0; j < n; j++) {if (j ==0) {// Selecting the first choice ans++; end_time = arr[j].end; } else {if (end_time <= arr[j].start) { ans++; end_time = arr[j].end; } } }System.out.println(ans); }}