Untitled
unknown
plain_text
9 months ago
1.6 kB
5
Indexable
import java.util.Arrays;
public class BestBasketballTeam {
public int bestTeamScore(int[] scores, int[] ages) {
int n = scores.length;
int[][] players = new int[n][2];
// Step 1: Pair up (age, score) and sort
for (int i = 0; i < n; i++) {
players[i][0] = ages[i]; // Age
players[i][1] = scores[i]; // Score
}
// Sort by age first, then by score (ensures no younger player has a higher score)
Arrays.sort(players, (a, b) -> (a[0] == b[0]) ? a[1] - b[1] : a[0] - b[0]);
// Step 2: DP to find the maximum valid team score
int[] dp = new int[n];
int maxScore = 0;
for (int i = 0; i < n; i++) {
dp[i] = players[i][1]; // Base case: team with just this player
for (int j = 0; j < i; j++) {
if (players[j][1] <= players[i][1]) { // No conflict
dp[i] = Math.max(dp[i], dp[j] + players[i][1]);
}
}
maxScore = Math.max(maxScore, dp[i]); // Track max team score
}
return maxScore;
}
public static void main(String[] args) {
BestBasketballTeam solver = new BestBasketballTeam();
System.out.println(solver.bestTeamScore(new int[]{1, 3, 5, 10, 15}, new int[]{1, 2, 3, 4, 5})); // 34
System.out.println(solver.bestTeamScore(new int[]{4, 5, 6, 5}, new int[]{2, 1, 2, 1})); // 16
System.out.println(solver.bestTeamScore(new int[]{1, 2, 3, 5}, new int[]{8, 9, 10, 1})); // 6
}
}
Editor is loading...
Leave a Comment