Submission #1039548

# Submission time Handle Problem Language Result Execution time Memory
1039548 2024-07-31T04:17:12 Z underwaterkillerwhale Visiting Singapore (NOI20_visitingsingapore) C++17
10 / 100
1409 ms 213584 KB
#include <bits/stdc++.h>
#define se              second
#define fs              first
#define mp              make_pair
#define pb              push_back
#define ll              long long
#define ii              pair<ll,ll>
#define ld              long double
#define SZ(v)           (int)v.size()
#define ALL(v)          v.begin(), v.end()
#define bit(msk, i)     ((msk >> i) & 1)
#define iter(id, v)     for(auto id : v)
#define rep(i,m,n)      for(int i=(m); i<=(n); i++)
#define reb(i,m,n)      for(int i=(m); i>=(n); i--)
using namespace std;

mt19937_64 rd(chrono :: steady_clock :: now().time_since_epoch().count());
ll Rand(ll l, ll r) { return uniform_int_distribution<ll> (l, r)(rd); }

const int N = 5e3 + 7;
const int Mod = 1e9 + 7;
const int szBL = 240;
const int INF = 2e9;
const int BASE = 137;

int n, K, m, A, B;
int dp[N][N], f[N][N];
int V[N];
int T[N], S[N];
int lst[N][N];

inline void maximize (int &A, int B) { if (A < B) A = B; }

void solution () {
    cin >> K >> n >> m >> A >> B;
    rep (i, 1, K) cin >> V[i];
    rep (i, 1, n) cin >> S[i];
    rep (i, 1, m) cin >> T[i];
    rep (i, 1, K)
    rep (j, 1, n) {
        lst[i][j] = (S[j] == i) ? j : lst[i][j - 1];
    }
    memset(dp, -0x3f, sizeof dp);
    memset(f, -0x3f, sizeof f);
    rep (j, 1, n) {
        rep (i, 1, m) {
            if (S[j] == T[i]) {
                if (i == 1) maximize(dp[i][j], V[T[1]]);
                else maximize (dp[i][j], A + B * (i - 1) + V[T[i]]);
                maximize (dp[i][j], f[i - 1][j - 1] + 2 * A + B * i + B * j + V[T[i]]);
                rep (k, 1, i - 1) {
                    if (S[j - 1] == T[k]) {
                        dp[i][j] = max(dp[i][j],
                                   dp[k][j - 1] + A * (i - k >= 2) + B * (i - k - 1) + V[T[i]]);
                    }
                }
                rep (k, 1, j - 1) {
                    if (S[k] == T[i - 1]) {
                        dp[i][j] = max(dp[i][j],
                                   dp[i - 1][k] + A * (j - k >= 2) + B * (j - k - 1) + V[T[i]]);
                    }
                }
            }
            f[i][j] = max({f[i - 1][j], f[i][j - 1], dp[i][j] - B * (j + 1) - B * (i + 1)});
        }
    }
    int res = -INF;
    rep (i, 1, m)
    rep (j, 1, n) res = max(res, dp[i][j] + A * (i != m) + B * (m - i));
    cout << res <<"\n";
}
#define file(name) freopen(name".inp", "r", stdin); \
freopen(name".out", "w", stdout);
/*
*/
int main () {
//    file("c");
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    ll num_Test = 1;
//    cin >> num_Test;
    while(num_Test--)
        solution();
}
/*
no bug challenge +2
*/
# Verdict Execution time Memory Grader output
1 Correct 82 ms 196692 KB Output is correct
2 Correct 1094 ms 196748 KB Output is correct
3 Correct 88 ms 196472 KB Output is correct
4 Correct 89 ms 196692 KB Output is correct
5 Correct 85 ms 196688 KB Output is correct
6 Correct 246 ms 196824 KB Output is correct
7 Correct 86 ms 196692 KB Output is correct
8 Correct 112 ms 196688 KB Output is correct
9 Correct 534 ms 196752 KB Output is correct
10 Correct 1409 ms 196720 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 93 ms 196692 KB Output is correct
2 Correct 95 ms 196564 KB Output is correct
3 Correct 276 ms 196692 KB Output is correct
4 Correct 86 ms 196688 KB Output is correct
5 Correct 112 ms 196544 KB Output is correct
6 Correct 612 ms 196692 KB Output is correct
7 Correct 547 ms 196696 KB Output is correct
8 Correct 795 ms 196720 KB Output is correct
9 Correct 136 ms 196692 KB Output is correct
10 Correct 1400 ms 196720 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 122 ms 200948 KB Output is correct
2 Correct 94 ms 205652 KB Output is correct
3 Correct 425 ms 198572 KB Output is correct
4 Correct 445 ms 208208 KB Output is correct
5 Correct 508 ms 197200 KB Output is correct
6 Correct 304 ms 199556 KB Output is correct
7 Correct 393 ms 206900 KB Output is correct
8 Correct 155 ms 213584 KB Output is correct
9 Correct 245 ms 210004 KB Output is correct
10 Correct 737 ms 202688 KB Output is correct
11 Correct 622 ms 204880 KB Output is correct
12 Correct 522 ms 211084 KB Output is correct
13 Incorrect 324 ms 213584 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 122 ms 200948 KB Output is correct
2 Correct 94 ms 205652 KB Output is correct
3 Correct 425 ms 198572 KB Output is correct
4 Correct 445 ms 208208 KB Output is correct
5 Correct 508 ms 197200 KB Output is correct
6 Correct 304 ms 199556 KB Output is correct
7 Correct 393 ms 206900 KB Output is correct
8 Correct 155 ms 213584 KB Output is correct
9 Correct 245 ms 210004 KB Output is correct
10 Correct 737 ms 202688 KB Output is correct
11 Correct 622 ms 204880 KB Output is correct
12 Correct 522 ms 211084 KB Output is correct
13 Incorrect 324 ms 213584 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 122 ms 200948 KB Output is correct
2 Correct 94 ms 205652 KB Output is correct
3 Correct 425 ms 198572 KB Output is correct
4 Correct 445 ms 208208 KB Output is correct
5 Correct 508 ms 197200 KB Output is correct
6 Correct 304 ms 199556 KB Output is correct
7 Correct 393 ms 206900 KB Output is correct
8 Correct 155 ms 213584 KB Output is correct
9 Correct 245 ms 210004 KB Output is correct
10 Correct 737 ms 202688 KB Output is correct
11 Correct 622 ms 204880 KB Output is correct
12 Correct 522 ms 211084 KB Output is correct
13 Incorrect 324 ms 213584 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 99 ms 196948 KB Output is correct
2 Correct 93 ms 196688 KB Output is correct
3 Correct 84 ms 196776 KB Output is correct
4 Correct 87 ms 196796 KB Output is correct
5 Correct 102 ms 196948 KB Output is correct
6 Correct 84 ms 196692 KB Output is correct
7 Correct 87 ms 196944 KB Output is correct
8 Correct 85 ms 196832 KB Output is correct
9 Correct 88 ms 196944 KB Output is correct
10 Correct 84 ms 196688 KB Output is correct
11 Correct 89 ms 196860 KB Output is correct
12 Correct 105 ms 196948 KB Output is correct
13 Incorrect 86 ms 196948 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 82 ms 196692 KB Output is correct
2 Correct 1094 ms 196748 KB Output is correct
3 Correct 88 ms 196472 KB Output is correct
4 Correct 89 ms 196692 KB Output is correct
5 Correct 85 ms 196688 KB Output is correct
6 Correct 246 ms 196824 KB Output is correct
7 Correct 86 ms 196692 KB Output is correct
8 Correct 112 ms 196688 KB Output is correct
9 Correct 534 ms 196752 KB Output is correct
10 Correct 1409 ms 196720 KB Output is correct
11 Correct 93 ms 196692 KB Output is correct
12 Correct 95 ms 196564 KB Output is correct
13 Correct 276 ms 196692 KB Output is correct
14 Correct 86 ms 196688 KB Output is correct
15 Correct 112 ms 196544 KB Output is correct
16 Correct 612 ms 196692 KB Output is correct
17 Correct 547 ms 196696 KB Output is correct
18 Correct 795 ms 196720 KB Output is correct
19 Correct 136 ms 196692 KB Output is correct
20 Correct 1400 ms 196720 KB Output is correct
21 Correct 122 ms 200948 KB Output is correct
22 Correct 94 ms 205652 KB Output is correct
23 Correct 425 ms 198572 KB Output is correct
24 Correct 445 ms 208208 KB Output is correct
25 Correct 508 ms 197200 KB Output is correct
26 Correct 304 ms 199556 KB Output is correct
27 Correct 393 ms 206900 KB Output is correct
28 Correct 155 ms 213584 KB Output is correct
29 Correct 245 ms 210004 KB Output is correct
30 Correct 737 ms 202688 KB Output is correct
31 Correct 622 ms 204880 KB Output is correct
32 Correct 522 ms 211084 KB Output is correct
33 Incorrect 324 ms 213584 KB Output isn't correct
34 Halted 0 ms 0 KB -