6972 | 2023. 12. 23 08:18:40 | Gervid | Benzinkút üzemeltetés (55) | cpp17 | Elfogadva 55/55 | 4ms | 3872 KiB |
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main()
{
int n, k, i, j;
cin >> n >> k;
vector<pair<int, int>> places(n);
for (i = 0; i < n; i++)
{
cin >> places[i].first >> places[i].second; //dist, profit
}
vector<int> opt(n); // profit
vector<int> last(n, -1);
for (i = 0; i < n; i++)
{
int max = 0, maxi = -1;
for (j = 0; j < i; j++)
{
if (max < opt[j] && places[j].first + k <= places[i].first)
{
max = opt[j];
maxi = j;
}
}
last[i] = maxi;
opt[i] = max + places[i].second;
}
int max = 0, maxi = 0;
for (j = 0; j < i; j++)
{
if (max < opt[j])
{
max = opt[j];
maxi = j;
}
}
cout << max << endl;
int node = maxi;
stack<int> reverse;
while (node != -1)
{
reverse.push(node);
node = last[node];
}
cout << reverse.size();
while (reverse.size() > 0)
{
cout << ' ' << reverse.top() + 1;
reverse.pop();
}
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 55/55 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1688 KiB | |||
2 | Elfogadva | 0/0 | 4ms | 1868 KiB | |||
3 | Elfogadva | 3/3 | 3ms | 2064 KiB | |||
4 | Elfogadva | 3/3 | 3ms | 2276 KiB | |||
5 | Elfogadva | 3/3 | 3ms | 2356 KiB | |||
6 | Elfogadva | 3/3 | 3ms | 2600 KiB | |||
7 | Elfogadva | 3/3 | 3ms | 2716 KiB | |||
8 | Elfogadva | 3/3 | 3ms | 2828 KiB | |||
9 | Elfogadva | 3/3 | 3ms | 2976 KiB | |||
10 | Elfogadva | 3/3 | 3ms | 3224 KiB | |||
11 | Elfogadva | 3/3 | 3ms | 3364 KiB | |||
12 | Elfogadva | 3/3 | 3ms | 3460 KiB | |||
13 | Elfogadva | 4/4 | 3ms | 3664 KiB | |||
14 | Elfogadva | 4/4 | 3ms | 3748 KiB | |||
15 | Elfogadva | 5/5 | 3ms | 3748 KiB | |||
16 | Elfogadva | 6/6 | 4ms | 3640 KiB | |||
17 | Elfogadva | 6/6 | 4ms | 3872 KiB |