233052026-01-18 18:04:19999Rendőrségi Üldözés 4cpp17Runtime error 40/100685ms235780 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;
    if(n==1||r==0||t==0)return -1;
    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
2Runtime error1ms316 KiB
subtask20/10
3Runtime error1ms316 KiB
4Runtime error1ms316 KiB
5Runtime error1ms316 KiB
6Runtime error1ms316 KiB
7Runtime error1ms316 KiB
subtask30/15
8Runtime error1ms316 KiB
9Runtime error1ms316 KiB
10Runtime error1ms316 KiB
11Runtime error1ms508 KiB
subtask40/15
12Accepted1ms316 KiB
13Accepted1ms316 KiB
14Wrong answer1ms316 KiB
15Accepted1ms316 KiB
subtask525/25
16Accepted1ms332 KiB
17Accepted1ms500 KiB
18Accepted1ms316 KiB
19Accepted1ms316 KiB
20Accepted1ms316 KiB
subtask615/15
21Accepted1ms316 KiB
22Accepted1ms500 KiB
23Accepted1ms316 KiB
24Accepted1ms316 KiB
25Accepted2ms756 KiB
subtask70/20
26Accepted14ms3308 KiB
27Accepted28ms8588 KiB
28Accepted70ms24248 KiB
29Accepted231ms79204 KiB
30Wrong answer685ms235780 KiB