Submission #942273

# Submission time Handle Problem Language Result Execution time Memory
942273 2024-03-10T11:52:18 Z Litusiano Feast (NOI19_feast) C++17
30 / 100
38 ms 3476 KB
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int inf = 1e18;
vector<vector<int>> table;

int query(int l, int r){
	if (l > r) return inf;
    int len = r-l+1;
    int k = 63- __builtin_clzll(len);
    return min(table[l][k], table[r-(1<<k)+1][k]);
}


signed main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n,k;
	cin>>n>>k;
	if(k == 1){
		int bst = 0;
		int cur = 0;
		for(int i = 0; i<n; i++){
			int a; cin>>a;
			cur = max(0ll, cur+a);
			bst = max(bst,cur);
		}
		cout<<bst<<endl;
		return 0;
	}
	if(n > 300){
		int s = 0;
		for(int i = 0; i<n; i++){
			int a; cin>>a;
			s+= max(0ll,a);
		}
		cout<<s<<endl;
		return 0;
	}
	vector<int> v(n); for(int& i : v) cin>>i;
	vector<int> pre(n+1); for(int i =0 ; i<n; i++) pre[i+1] = pre[i] + v[i];
	table.resize(n+1, vector<int>(25,inf));
	for(int i = 0; i<=n; i++) table[i][0] = pre[i];
	for(int k = 1; k<25; k++){
		for(int i = 0; i<n; i++){
			int covers = i + (1<<k) -1;
			if(covers >= n) break;
			int nxt = i + (1<<(k-1))-1;
			table[i][k] = min(table[i][k-1], table[nxt][k-1]);
		}
	}

	vector<vector<int>> dp(n+1, vector<int>(k+1,0)); // using i with i first, and k customers 
	for(int i = 0; i<=n; i++) dp[i][0] = 0;
	for(int j = 1; j<=k; j++){
		for(int i = 1; i<=n; i++){
			int idx = i-1;
			for(int z = 0; z<i; z++){
				dp[i][j] = max(dp[i][j], dp[z][j] + pre[i] - pre[z]);
				dp[i][j] = max(dp[i][j], dp[z][j-1] + pre[i] - query(z, i-1));
			}
		}
	}

	int ans = -inf;
	for(int i = 0; i<=n; i++) ans = max(ans, dp[i][k]);
	cout<<ans<<endl;

}

Compilation message

feast.cpp: In function 'int main()':
feast.cpp:57:8: warning: unused variable 'idx' [-Wunused-variable]
   57 |    int idx = i-1;
      |        ^~~
# Verdict Execution time Memory Grader output
1 Correct 23 ms 3156 KB Output is correct
2 Correct 24 ms 3256 KB Output is correct
3 Correct 25 ms 3124 KB Output is correct
4 Correct 25 ms 3260 KB Output is correct
5 Correct 24 ms 3112 KB Output is correct
6 Correct 25 ms 3232 KB Output is correct
7 Correct 23 ms 3244 KB Output is correct
8 Correct 31 ms 3232 KB Output is correct
9 Correct 24 ms 2988 KB Output is correct
10 Correct 25 ms 3124 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 1372 KB Output is correct
2 Correct 20 ms 1488 KB Output is correct
3 Correct 15 ms 1568 KB Output is correct
4 Correct 15 ms 1488 KB Output is correct
5 Correct 24 ms 2992 KB Output is correct
6 Correct 15 ms 1336 KB Output is correct
7 Correct 15 ms 1596 KB Output is correct
8 Correct 26 ms 3428 KB Output is correct
9 Correct 25 ms 3164 KB Output is correct
10 Correct 14 ms 1372 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 26 ms 3360 KB Output is correct
2 Correct 28 ms 3380 KB Output is correct
3 Correct 28 ms 3396 KB Output is correct
4 Correct 29 ms 3372 KB Output is correct
5 Correct 27 ms 3232 KB Output is correct
6 Correct 29 ms 3256 KB Output is correct
7 Correct 25 ms 3244 KB Output is correct
8 Correct 38 ms 3376 KB Output is correct
9 Correct 25 ms 3408 KB Output is correct
10 Correct 29 ms 3476 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 1 ms 452 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 1 ms 452 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 1 ms 452 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 23 ms 3156 KB Output is correct
2 Correct 24 ms 3256 KB Output is correct
3 Correct 25 ms 3124 KB Output is correct
4 Correct 25 ms 3260 KB Output is correct
5 Correct 24 ms 3112 KB Output is correct
6 Correct 25 ms 3232 KB Output is correct
7 Correct 23 ms 3244 KB Output is correct
8 Correct 31 ms 3232 KB Output is correct
9 Correct 24 ms 2988 KB Output is correct
10 Correct 25 ms 3124 KB Output is correct
11 Correct 16 ms 1372 KB Output is correct
12 Correct 20 ms 1488 KB Output is correct
13 Correct 15 ms 1568 KB Output is correct
14 Correct 15 ms 1488 KB Output is correct
15 Correct 24 ms 2992 KB Output is correct
16 Correct 15 ms 1336 KB Output is correct
17 Correct 15 ms 1596 KB Output is correct
18 Correct 26 ms 3428 KB Output is correct
19 Correct 25 ms 3164 KB Output is correct
20 Correct 14 ms 1372 KB Output is correct
21 Correct 26 ms 3360 KB Output is correct
22 Correct 28 ms 3380 KB Output is correct
23 Correct 28 ms 3396 KB Output is correct
24 Correct 29 ms 3372 KB Output is correct
25 Correct 27 ms 3232 KB Output is correct
26 Correct 29 ms 3256 KB Output is correct
27 Correct 25 ms 3244 KB Output is correct
28 Correct 38 ms 3376 KB Output is correct
29 Correct 25 ms 3408 KB Output is correct
30 Correct 29 ms 3476 KB Output is correct
31 Correct 1 ms 348 KB Output is correct
32 Incorrect 1 ms 452 KB Output isn't correct
33 Halted 0 ms 0 KB -