Submission #1338701

#TimeUsernameProblemLanguageResultExecution timeMemory
1338701tkm_algorithmsRabbit Carrot (LMIO19_triusis)C++20
0 / 100
141 ms196240 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
#define int ll
using P = pair<int, int>;
#define all(x) x.begin(), x.end()
#define rep(i, l, n) for (int i = l; i < (n); ++i)
#define sz(x) (int)x.size()
const char nl = '\n';

int n, m; 

bool c(int x, int y) {
	if (x+m >= y||x>y)return 1;
	return 0;
}

void solve() {
	cin >> n >> m;
	vector<int> a(n+1);
	int dp[n+1][n+1];
	memset(dp, 0, sizeof dp);
	rep(i, 1, n+1)
		rep(j, 0, n+1)dp[i][j] = -m-1;
	rep(i, 1, n+1)cin >> a[i];
	
	rep(i, 1, n+1) {
		if (dp[i-1][0]+m >= a[i] || dp[i-1][0] > a[i])dp[i][0] = a[i];
		rep(j, 1, i+1) {
			if(c(dp[i-1][j], a[i]))dp[i][j] = a[i];
			else if (dp[i-1][j-1] >= 0)dp[i][j] = max(dp[i][j], dp[i-1][j-1]+m);
		}
	}
	
	rep(i, 0, n+1)
		if (dp[n][i] >= 0) {
			cout << i << nl;
			return;
		}
		
	//cout << dp[1][1] << nl;
}

int32_t main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...