Submission #866950

#TimeUsernameProblemLanguageResultExecution timeMemory
866950Mizo_CompilerThe short shank; Redemption (BOI21_prison)C++17
0 / 100
132 ms80824 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double ld;
#define pb push_back
#define sz(x) int(x.size())
#define all(x) x.begin(),x.end()
#define F first
#define S second
const int N = 2e6+5;
int n, a[N], d, t;
vector<vector<vector<ll>>> dp;

ll sol(int i, int rem, bool f) {
	if (rem < 0)return n;
	if (i == n)return 0;
	ll &ret = dp[i][rem][f];
	if (~ret)return ret;
	ret = sol(i+1, rem, (f|a[i])) + (f|a[i]);
	ret = min(ret, sol(i+1, rem-1, false) + (a[i]|f));
	return ret;
}

int main () {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin >> n >> d >> t;
	int ans = 0;
	int cnt = 0;
	multiset<int, greater<>> s;
	for (int i = 0; i < n; i++) {
		cin >> a[i];
		a[i] = (a[i] <= t);
	}
	dp.resize(n);
	for (int i = 0; i < n; i++) {
		dp[i].resize(d+1);
		for (int j = 0; j <= d; j++) {
			dp[i][j].resize(2);
			dp[i][j][0] = dp[i][j][1] = -1;
		}
	}
	int pr[n], suf[n+1];
	suf[n] = 0;
	pr[0] = a[0];
	for (int i = 1; i < n; i++) {
		pr[i] = (pr[i-1] ? pr[i-1]+1 : pr[i-1] + a[i]);
	}
	for (int i = n-1; i >= 0; i--) {
		suf[i] = (a[i] ? n-i : suf[i+1]);
	}
	ans = pr[n-1];
	for (int i = 0; i+1 < n; i++) {
		ans = min(ans, pr[i] + suf[i+1]);
	}
	cout << ans << "\n";
}

Compilation message (stderr)

prison.cpp: In function 'int main()':
prison.cpp:29:6: warning: unused variable 'cnt' [-Wunused-variable]
   29 |  int cnt = 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...