6001 | 2023. 10. 15 12:26:48 | Catt | Benzinkút üzemeltetés (55) | cpp17 | Hibás válasz 0/55 | 7ms | 11928 KiB |
#include <iostream>
#include <vector>
using namespace std;
struct RestStop {
int distance;
int profit;
};
int main() {
int N, K;
cin >> N >> K;
vector<RestStop> restStops(N + 1);
vector<vector<int>> dp(N + 1, vector<int>(N + 1, 0));
for (int i = 1; i <= N; i++) {
cin >> restStops[i].distance >> restStops[i].profit;
}
for (int i = 1; i <= N; i++) {
for (int j = i - 1; j >= 0; j--) {
dp[i][j] = max(dp[i][j], dp[i - 1][j]);
int distance = restStops[i].distance - restStops[j].distance;
if (distance >= K) {
dp[i][j] = max(dp[i][j], dp[j][j] + restStops[i].profit);
}
}
}
int maxProfit = 0;
int lastStop = 0;
for (int i = 1; i <= N; i++) {
if (dp[N][i] > maxProfit) {
maxProfit = dp[N][i];
lastStop = i;
}
}
cout << maxProfit << endl;
vector<int> chosenStops;
for (int i = lastStop; i >= 1; i--) {
if (dp[lastStop][i] > dp[lastStop][i - 1]) {
chosenStops.push_back(i);
lastStop = i - 1;
}
}
cout << chosenStops.size() << endl;
for (int i = chosenStops.size() - 1; i >= 0; i--) {
cout << chosenStops[i] << " ";
}
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 0/55 | ||||||
1 | Hibás válasz | 0/0 | 3ms | 1944 KiB | |||
2 | Hibás válasz | 0/0 | 7ms | 10008 KiB | |||
3 | Hibás válasz | 0/3 | 3ms | 2296 KiB | |||
4 | Hibás válasz | 0/3 | 3ms | 2508 KiB | |||
5 | Hibás válasz | 0/3 | 3ms | 2732 KiB | |||
6 | Hibás válasz | 0/3 | 3ms | 2964 KiB | |||
7 | Hibás válasz | 0/3 | 3ms | 2908 KiB | |||
8 | Hibás válasz | 0/3 | 3ms | 3040 KiB | |||
9 | Hibás válasz | 0/3 | 3ms | 3172 KiB | |||
10 | Hibás válasz | 0/3 | 3ms | 3264 KiB | |||
11 | Hibás válasz | 0/3 | 3ms | 3564 KiB | |||
12 | Hibás válasz | 0/3 | 4ms | 5556 KiB | |||
13 | Hibás válasz | 0/4 | 4ms | 6528 KiB | |||
14 | Hibás válasz | 0/4 | 4ms | 7516 KiB | |||
15 | Hibás válasz | 0/5 | 6ms | 8764 KiB | |||
16 | Hibás válasz | 0/6 | 7ms | 10088 KiB | |||
17 | Hibás válasz | 0/6 | 7ms | 11928 KiB |