1513 | 2022. 11. 21 20:21:32 | kicsiboglar | Benzinkút üzemeltetés (55) | cpp11 | Elfogadva 55/55 | 3ms | 3836 KiB |
#include <iostream>
#include <vector>
#define ll long long
using namespace std;
//ifstream cin ("input.in");
//ofstream cout ("output.out");
ll n,m,i,j,a,b,k;
struct element
{
ll best,before,dis;
bool ok;
};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin>>n>>k;
vector <element> dp(n+1);
for (i=1;i<=n;++i)
{
cin>>a>>b;
dp[i].dis=a;
if (i==1)
{
dp[i].best=b;
dp[i].before=i;
dp[i].ok=true;
continue;
}
dp[i].best=b,dp[i].before=i,dp[i].ok=true;
j=i-1;
while (j>=1&&a-dp[j].dis<k)
{
if (dp[i].best<dp[j].best)
{
dp[i].best=dp[j].best;
dp[i].before=j;
dp[i].ok=false;
}
j--;
}
if (j!=0)
{
if (dp[j].best+b>dp[i].best)
{
dp[i].best=dp[j].best+b;
dp[i].before=j;
dp[i].ok=true;
}
}
}
cout<<dp[n].best<<"\n";
vector <ll> res(1);
i=n;
if (dp[n].ok) res.push_back(n);
while (dp[i].before!=i)
{
i=dp[i].before;
if (dp[i].ok) res.push_back(i);
}
cout<<res.size()-1<<" ";
for (i=res.size()-1;i>0;--i) cout<<res[i]<<" ";
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 55/55 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1828 KiB | |||
2 | Elfogadva | 0/0 | 3ms | 2208 KiB | |||
3 | Elfogadva | 3/3 | 3ms | 2348 KiB | |||
4 | Elfogadva | 3/3 | 3ms | 2460 KiB | |||
5 | Elfogadva | 3/3 | 3ms | 2676 KiB | |||
6 | Elfogadva | 3/3 | 3ms | 2752 KiB | |||
7 | Elfogadva | 3/3 | 3ms | 2880 KiB | |||
8 | Elfogadva | 3/3 | 3ms | 3112 KiB | |||
9 | Elfogadva | 3/3 | 3ms | 3232 KiB | |||
10 | Elfogadva | 3/3 | 3ms | 3312 KiB | |||
11 | Elfogadva | 3/3 | 3ms | 3408 KiB | |||
12 | Elfogadva | 3/3 | 3ms | 3204 KiB | |||
13 | Elfogadva | 4/4 | 3ms | 3204 KiB | |||
14 | Elfogadva | 4/4 | 3ms | 3208 KiB | |||
15 | Elfogadva | 5/5 | 3ms | 3472 KiB | |||
16 | Elfogadva | 6/6 | 3ms | 3704 KiB | |||
17 | Elfogadva | 6/6 | 3ms | 3836 KiB |