233042026-01-18 18:02:52999Rendőrségi Üldözés 4cpp17Wrong answer 55/100640ms235840 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
#define int long long


//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),v(n);
    vector<vector<int>> dp(n,vector<int>(r+1,INT_MAX));
    for(int i = 0;i<n;i++){
        cin>>be[i];
        if(i>0){
            v[i]=be[i]-be[i-1];
            dp[i][r]=dp[i-1][r]+v[i];
        }
        else{
            v[0]=be[0];
            dp[0][r]=be[0];
        } 
        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=INT_MAX;
    for(int j=0;j<=r;j++){
        mx=min(mx,dp[n-1][j]);
    }
    cout<<l-be[n-1]+mx;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted1ms316 KiB
subtask20/10
3Accepted1ms548 KiB
4Wrong answer1ms316 KiB
5Accepted1ms508 KiB
6Wrong answer1ms380 KiB
7Wrong answer1ms316 KiB
subtask315/15
8Accepted1ms508 KiB
9Accepted1ms324 KiB
10Accepted1ms316 KiB
11Accepted1ms316 KiB
subtask40/15
12Accepted1ms384 KiB
13Accepted1ms316 KiB
14Wrong answer1ms316 KiB
15Accepted1ms316 KiB
subtask525/25
16Accepted1ms316 KiB
17Accepted1ms316 KiB
18Accepted1ms316 KiB
19Accepted1ms316 KiB
20Accepted1ms500 KiB
subtask615/15
21Accepted1ms316 KiB
22Accepted2ms316 KiB
23Accepted1ms460 KiB
24Accepted2ms540 KiB
25Accepted2ms564 KiB
subtask70/20
26Accepted14ms3212 KiB
27Accepted30ms8720 KiB
28Accepted71ms24376 KiB
29Accepted232ms79236 KiB
30Wrong answer640ms235840 KiB