

Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
#pragma GCC optimize("03")
#include<bits/stdc++.h>
#define nmax 10000007
#define nmax2 1000006
#define nmax3 100005
#define mod 1000000007
#define fi first
#define se second
#define ma -1e18
#define mi 1e18
#define ll long long
using namespace std;
void start()
{
// freopen(".inp","r",stdin);
// freopen(".out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
}
ll qhd(ll n, ll k, const vector<int>& ngay, const vector<int>& tien) {
vector<int> dp(n, 0);
dp[0] = tien[0];
for (int i = 1; i < n; i++) {
dp[i] = tien[i];
for (int j = i - 1; j >= 0; j--) {
if (ngay[i] - ngay[j] >= k) {
dp[i] = max(dp[i], tien[i] + dp[j]);
break;
}
}
dp[i] = max(dp[i], dp[i - 1]);
}
return dp[n - 1];
}
int main() {
ll n, k;
cin >> n >> k;
vector<int> ngay(n);
for (int i = 0; i < n; i++) {
cin >> ngay[i];
}
vector<int> tien(n);
for (int i = 0; i < n; i++) {
cin >> tien[i];
}
cout << qhd(n, k, ngay, tien );
}/*ta sử dụng một hàm `qhd` để tính tổng số tiền thưởng nhiều nhất mà Nam có thể có được. Trong hàm này, ta sử dụng phương pháp quy hoạch động để tính toán. Ta duyệt qua từng giải đấu và lựa chọn giải đấu trước đó mà cách giải đấu hiện tại ít nhất là k ngày. Ta cập nhật tổng số tiền thưởng nếu có giải đấu trước đó tốt hơn để có tổng tiền thưởng lớn nhất. Cuối cùng, trả về tổng số tiền thưởng lớn nhất.*/
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin
135
2273
66
cho minh xin 5 sao nhe