You are on page 1of 1

import java.util.

*;
public class JobSequence {
public static int getMaxProfit(int[] profit, int[] deadline, int n) {
List<int[]> jobs = new ArrayList<>();
for (int i = 0; i < n; i++) {
jobs.add(new int[]{profit[i], deadline[i]});
}
jobs.sort((a, b) -> Integer.compare(b[0], a[0]));
int[] total = new int[Arrays.stream(deadline).max().getAsInt() + 1];
for (int i = 0; i < n; i++) {
for (int day = jobs.get(i)[1]; day > 0; day--) {
if (total[day] == 0) {
total[day] = jobs.get(i)[0];
break;
}
}
}
int maxProfit = Arrays.stream(total).sum();
return maxProfit;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Number of elements: ");
int n = scanner.nextInt();
int[] profit = new int[n];
int[] deadline = new int[n];
System.out.println("Enter Profit amount: ");
for (int i = 0; i < n; i++) {
profit[i] = scanner.nextInt();
}
System.out.println("Enter deadline: ");
for (int i = 0; i < n; i++) {
deadline[i] = scanner.nextInt();
}
int maxProfit = getMaxProfit(profit, deadline, n);
System.out.println("Max profit is: " + maxProfit);
}
}

OUTPUT:
PS C:\Users\HP\OneDrive\Desktop> javac JobSequence.java
PS C:\Users\HP\OneDrive\Desktop> java JobSequence
Number of elements: 7
Enter Profit amount:
25
75
40
35
90
60
50
Enter deadline:
2
6
4
3
4
2
6
Max profit is: 350

You might also like