352 | 2021. 10. 25 17:08:46 | goczbali | Benzinkút üzemeltetés (55) | cpp14 | Elfogadva 55/55 | 4ms | 4080 KiB |
#include <algorithm>
#include <iostream>
#include <vector>
#define ll long long
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<ll> d(n + 1);
vector<ll> c(n + 1);
for (int i = 1; i <= n; i++) {
cin >> d[i] >> c[i];
}
vector<ll> dp(n + 1);
vector<vector<bool> > s(n + 1, vector<bool>(n + 1));
for (int i = 1; i <= n; i++) {
dp[i] = dp[i - 1];
s[i] = s[i - 1];
long j = distance(d.begin(), upper_bound(d.begin(), d.end(), d[i] - k)) - 1;
if (j < 0) j = 0;
if (c[i] + dp[j] > dp[i - 1]) {
dp[i] = c[i] + dp[j];
s[i] = s[j];
s[i][i] = true;
}
}
int count = 0;
for (int i = 1; i <= n; i++) {
if (s[n][i]) {
count++;
}
}
cout << dp[n] << endl;
cout << count << " ";
for (int i = 1; i <= n; i++) {
if (s[n][i]) {
cout << i << " ";
}
}
cout << endl;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 55/55 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1816 KiB | |||
2 | Elfogadva | 0/0 | 4ms | 2480 KiB | |||
3 | Elfogadva | 3/3 | 3ms | 2236 KiB | |||
4 | Elfogadva | 3/3 | 3ms | 2608 KiB | |||
5 | Elfogadva | 3/3 | 3ms | 2620 KiB | |||
6 | Elfogadva | 3/3 | 3ms | 2780 KiB | |||
7 | Elfogadva | 3/3 | 3ms | 3012 KiB | |||
8 | Elfogadva | 3/3 | 3ms | 3100 KiB | |||
9 | Elfogadva | 3/3 | 3ms | 3192 KiB | |||
10 | Elfogadva | 3/3 | 3ms | 3312 KiB | |||
11 | Elfogadva | 3/3 | 3ms | 3280 KiB | |||
12 | Elfogadva | 3/3 | 3ms | 3340 KiB | |||
13 | Elfogadva | 4/4 | 3ms | 3364 KiB | |||
14 | Elfogadva | 4/4 | 4ms | 3632 KiB | |||
15 | Elfogadva | 5/5 | 4ms | 3896 KiB | |||
16 | Elfogadva | 6/6 | 4ms | 4080 KiB | |||
17 | Elfogadva | 6/6 | 4ms | 4028 KiB |