Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 10005;
- int n;
- int64_t a[5][N];
- int d[] = {0, 1, 2, 4, 5, 8, 9, 10};
- int64_t dp[N][17];
- int64_t res = -1e9;
- int get_bit(int x, int k) {
- return (x >> k) & 1;
- }
- void solve() {
- cin >> n;
- for(int i = 0; i < 4; ++i)
- for(int j = 1; j <= n; ++j) {
- cin >> a[i][j];
- res = max(res, a[i][j]);
- }
- if(res < 0) {
- cout << res << '\n';
- return;
- }
- for(int j = 1; j <= n; ++j) {
- for(int mask = 0; mask < 8; ++mask) {
- for(int i = 0; i < 4; ++i) {
- if(get_bit(d[mask], i))
- dp[j][d[mask]] += a[i][j];
- }
- int64_t tmp = -1e8;
- for(int bitmask = 0; bitmask < 8; ++ bitmask) {
- if((d[mask] | d[bitmask]) == (d[mask] ^ d[bitmask]))
- tmp = max(tmp, dp[j-1][d[bitmask]]);
- }
- dp[j][d[mask]] += tmp;
- }
- }
- for(int i = 0; i< 8; ++i)
- res = max(res, dp[n][d[i]]);
- cout << res << '\n';
- }
- int main() {
- //freopen("in.txt", "r", stdin);
- //freopen("QBSELECT.inp", "r", stdin);
- //freopen("QBSELECT.out", "w", stdout);
- ios_base::sync_with_stdio(false);
- cin.tie(NULL); cout.tie(NULL);
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment