133572025-01-07 17:01:19horkaBenzinkút üzemeltetés (55)cpp17Elfogadva 55/5539ms31812 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=1000050;
int dp[c],last[c],ind[c];
int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int n; cin>>n;
    int k; cin>>k;
    vector<array<int, 2>> v(n+1);
    for(int i=1; i<=n; i++)
        cin>>v[i][0]>>v[i][1];
    vector<vector<array<int, 3>>> vissza(c);
    for(int i=1; i<=n; i++)
    {
        vissza[v[i][0]].push_back({v[i][0]-k,v[i][1],i});
    }
    for(int i=1; i<c; i++)
    {
        dp[i]=dp[i-1];
        last[i]=i-1;
        for(auto &[honn,ar,j]:vissza[i])
        {
            int l=0;
            if(honn>=0) l=dp[honn];
            if(l+ar>dp[i])
            {
                last[i]=max(0,honn);
                ind[i]=j;
                dp[i]=l+ar;
            }
        }
    }
    cout<<dp[c-1]<<"\n";
    vector<int> ans;
    int x=c-1;
    while(x>0)
    {
        if(ind[x]) ans.push_back(ind[x]);
        x=last[x];
    }
    sort(ans.begin(),ans.end());
    cout<<ans.size()<<" ";
    for(int i:ans)
        cout<<i<<" ";
    cout<<"\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/030ms31540 KiB
2Elfogadva0/032ms31800 KiB
3Elfogadva3/339ms31552 KiB
4Elfogadva3/339ms31544 KiB
5Elfogadva3/330ms31700 KiB
6Elfogadva3/330ms31628 KiB
7Elfogadva3/337ms31600 KiB
8Elfogadva3/337ms31540 KiB
9Elfogadva3/339ms31536 KiB
10Elfogadva3/330ms31536 KiB
11Elfogadva3/329ms31720 KiB
12Elfogadva3/339ms31796 KiB
13Elfogadva4/437ms31580 KiB
14Elfogadva4/437ms31796 KiB
15Elfogadva5/530ms31812 KiB
16Elfogadva6/630ms31580 KiB
17Elfogadva6/629ms31796 KiB