Best Team With No Conflicts LeetCode solution in C++

1
class Solution {
2
public:
3
int dp[1005][1005];
4
int bestTeamScore(vector<int> &scores, vector<int> &ages) {
5
vector<vector<int>> grp;
6
for (int i = 0; i < scores.size(); i++) {
7
grp.push_back({scores[i], ages[i]});
8
}
9
sort(grp.begin(), grp.end());
10
memset(dp, -1, sizeof(dp));
11
return recur(grp, 0, ages.size(), 0);
12
}
13

14
int recur(vector<vector<int>> &grp, int i, int n, int maxiAge) {
15
if (i == n) return 0;
16
if (dp[i][maxiAge] != -1) return dp[i][maxiAge];
17
// score is already greater than previous socre we need to check age
18
// if current age is greater than previous maxiAge then two choices
19
if (grp[i][1] >= maxiAge) {
20
return dp[i][maxiAge] =
21
max(grp[i][0] + recur(grp, i + 1, n, grp[i][1]), recur(grp, i + 1, n, maxiAge));
22
}
23
return dp[i][maxiAge] = recur(grp, i + 1, n, maxiAge);
24
}
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0