233062026-01-18 18:24:19999Rendőrségi Üldözés 4cpp17Elfogadva 100/100643ms235780 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
#define int long long
const long long INF=1e18;

//dp[i][j]:
/*
    mikor mehetsz tovabb i-tol leghamarabb ha j darab csalas van hatra.
*/
signed main() {
    int n,r,t,l;cin>>n>>r>>t>>l;
    vector<int> be(n+1,0),v(n+1,0);
    vector<vector<int>> dp(n+1,vector<int>(r+1,INF));
    dp[0][r]=0;
    for(int i = 1;i<=n;i++){
        cin>>be[i];
        v[i]=be[i]-be[i-1];
        dp[i][r]=dp[i-1][r]+v[i];
        if(dp[i][r]%(2*t)>=t)dp[i][r]+=2*t-dp[i][r]%(2*t);
    }
    for(int i = 1;i<=n;i++){
        //cout<<dp[i][r]<<' ';
        for(int j=0;j<r;j++){
            dp[i][j]=dp[i-1][j]+v[i];
            if(dp[i][j]%(2*t)>=t)dp[i][j]+=2*t-dp[i][j]%(2*t);
            if(dp[i][j]>dp[i-1][j+1]+v[i])dp[i][j]=dp[i-1][j+1]+v[i];
        }
    }
    int mx=INF;
    for(int j=0;j<=r;j++){
        mx=min(mx,dp[n][j]);
    }
    cout<<l-be[n]+mx;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask210/10
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Elfogadva1ms556 KiB
6Elfogadva1ms316 KiB
7Elfogadva1ms368 KiB
subtask315/15
8Elfogadva1ms332 KiB
9Elfogadva1ms316 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms316 KiB
subtask415/15
12Elfogadva1ms316 KiB
13Elfogadva1ms316 KiB
14Elfogadva1ms316 KiB
15Elfogadva1ms316 KiB
subtask525/25
16Elfogadva1ms316 KiB
17Elfogadva1ms316 KiB
18Elfogadva1ms316 KiB
19Elfogadva1ms316 KiB
20Elfogadva1ms316 KiB
subtask615/15
21Elfogadva1ms316 KiB
22Elfogadva1ms316 KiB
23Elfogadva1ms316 KiB
24Elfogadva1ms316 KiB
25Elfogadva2ms564 KiB
subtask720/20
26Elfogadva14ms3264 KiB
27Elfogadva28ms8756 KiB
28Elfogadva75ms24256 KiB
29Elfogadva230ms79152 KiB
30Elfogadva643ms235780 KiB