1855D - Earn or Unlock - CodeForces Solution


bitmasks brute force dp

Please click on ads to support us..

C++ Code:

#include<iostream>
#include<cstring>
#include<vector>
#include<bitset>
using namespace std;
using LL = long long;

int main() {

	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(0);

	int n;
	cin >> n;
	vector<int> a(n + 1);
	vector<LL> s(n + 1);
	for(int i = 1; i <= n; i++) {
		cin >> a[i];
		s[i] = s[i - 1] + a[i];
	}
	bitset<200001> dp;
	LL ans = a[1];
	dp.set(a[1]);
	dp.reset(0);
	for(int i = 2; i <= n; i++) {
		if (dp.test(i - 1)) {
			ans = max(ans, s[i] - (i - 1));
		}
		dp |= dp << a[i];
		dp.reset(i - 1);
	}
	for(int i = n - 1; i <= 2 * n; i++) {
		if (dp.test(i)) {
			ans = max(ans, s[n] - i);
			
		}
	}
	cout << ans << '\n';

}


Comments

Submit
0 Comments
More Questions

1566B - MIN-MEX Cut
678C - Joty and Chocolate
1352E - Special Elements
1520E - Arranging The Sheep
1157E - Minimum Array
1661D - Progressions Covering
262A - Roma and Lucky Numbers
1634B - Fortune Telling
1358A - Park Lighting
253C - Text Editor
365B - The Fibonacci Segment
75A - Life Without Zeros
1519A - Red and Blue Beans
466A - Cheap Travel
659E - New Reform
1385B - Restore the Permutation by Merger
706A - Beru-taxi
686A - Free Ice Cream
1358D - The Best Vacation
1620B - Triangles on a Rectangle
999C - Alphabetic Removals
1634C - OKEA
1368C - Even Picture
1505F - Math
1473A - Replacing Elements
959A - Mahmoud and Ehab and the even-odd game
78B - Easter Eggs
1455B - Jumps
1225C - p-binary
1525D - Armchairs