| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 334037 | ronnith | Holding (COCI20_holding) | C++14 | 318 ms | 20812 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
typedef long long ll;
#define v vector
#define vl vector<ll>
#define mk make_pair
#define f first
#define s second
using namespace std;
int main(){
	ll n, l, r, K;
	scanf("%lld%lld%lld%lld", &n, &l, &r, &K);
	ll a[n];
	for(int i = 0;i < n;i ++){
		scanf("%lld", &a[i]);
	}
	// int ans = INT_MAX;
	// for(int bit = 0;bit < (1<<n);bit ++){
	// 	if(__builtin_popcount(bit) == n - l + 1){
	// 		int sm = 0;
	// 		int cost = 0;
	// 		int h = l;
	// 		for(int i = 0;i < n;i ++){
	// 			if(!((1<<i)&bit))continue;
	// 			cost += h - (i + 1);
	// 			h ++;
	// 			sm += a[i];
	// 		}
	// 		if(cost <= k){
	// 			ans = min(ans, sm);
	// 		}
	// 	}
	// }
	// printf("%d\n", ans);
	ll ans = INT_MAX;
	v<v<vl>> dp1(2, v<vl>(r - l + 2, vl(K + 1, INT_MAX)));
	v<v<vl>> dp2(2, v<vl>(r - l + 2, vl(K + 1, INT_MAX)));
	int crr = 0;
	int prev = 1;
	for(int i = 0;i < n;i ++){
		for(int j = 0;j < r - l + 2;j ++){
			for(int k = 0;k <= K;k ++){
				dp1[crr][j][k] = dp2[crr][j][k] = INT_MAX;
				if(j == 0){
					dp2[crr][j][k] = 0;
				} else if(i == 0){
					if(j == 1){
						if(abs(l - i - 1) == k)
							dp1[crr][j][k] = a[i];
					} else {
						dp1[crr][j][k] = INT_MAX;
					}
				} else {
					if(abs(j - 1 + l - i - 1) <= k){
						dp1[crr][j][k] = a[i] + min(dp1[prev][j - 1][k - abs(j - 1 + l - i - 1)], dp2[prev][j - 1][k - abs(j - 1 + l - i - 1)]);// abs(j - 1 + l - i)
					}
					dp2[crr][j][k] = min(dp1[prev][j][k], dp2[prev][j][k]);
				}
				if(i == n - 1 and j == r - l + 1)
					ans = min(ans, min(dp1[crr][j][k], dp2[crr][j][k]));
			}
		}
		crr = 1 - crr;
		prev = 1 - prev;
	}
	printf("%lld\n", ans);
	return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
