Submission #1039530

# Submission time Handle Problem Language Result Execution time Memory
1039530 2024-07-31T03:33:53 Z underwaterkillerwhale Visiting Singapore (NOI20_visitingsingapore) C++17
10 / 100
1518 ms 215648 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 ll INF = 1e18;
const int BASE = 137;

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

inline void maximize (ll &A, ll 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);
    dp[0][0] = 0;
    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]]);

                rep (k, 1, i - 1) {
                    int t = lst[T[k]][j - 1];
                    dp[i][j] = max(dp[i][j], dp[k][t] + A * (i - k >= 2) + B * (i - k - 1) + A * (j - t >= 2) + B * (j - t - 1) + V[T[i]]);
                }
//                cout << i <<" "<<j<<" "<<dp[i][j] <<"\n";
            }
        }
    }
    ll 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 94 ms 198224 KB Output is correct
2 Correct 1070 ms 198228 KB Output is correct
3 Correct 85 ms 198224 KB Output is correct
4 Correct 83 ms 198048 KB Output is correct
5 Correct 77 ms 198224 KB Output is correct
6 Correct 191 ms 198120 KB Output is correct
7 Correct 84 ms 198232 KB Output is correct
8 Correct 103 ms 198140 KB Output is correct
9 Correct 498 ms 198224 KB Output is correct
10 Correct 1431 ms 198228 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 101 ms 198228 KB Output is correct
2 Correct 84 ms 198224 KB Output is correct
3 Correct 317 ms 198228 KB Output is correct
4 Correct 94 ms 198228 KB Output is correct
5 Correct 130 ms 198228 KB Output is correct
6 Correct 627 ms 198008 KB Output is correct
7 Correct 691 ms 198228 KB Output is correct
8 Correct 928 ms 198228 KB Output is correct
9 Correct 125 ms 198228 KB Output is correct
10 Correct 1428 ms 198220 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 110 ms 203348 KB Output is correct
2 Correct 95 ms 208460 KB Output is correct
3 Correct 568 ms 200280 KB Output is correct
4 Correct 682 ms 209780 KB Output is correct
5 Correct 1516 ms 198484 KB Output is correct
6 Correct 569 ms 202228 KB Output is correct
7 Correct 453 ms 208268 KB Output is correct
8 Correct 141 ms 215648 KB Output is correct
9 Correct 275 ms 212308 KB Output is correct
10 Correct 1518 ms 204112 KB Output is correct
11 Correct 1174 ms 206528 KB Output is correct
12 Correct 787 ms 212372 KB Output is correct
13 Incorrect 124 ms 215124 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 110 ms 203348 KB Output is correct
2 Correct 95 ms 208460 KB Output is correct
3 Correct 568 ms 200280 KB Output is correct
4 Correct 682 ms 209780 KB Output is correct
5 Correct 1516 ms 198484 KB Output is correct
6 Correct 569 ms 202228 KB Output is correct
7 Correct 453 ms 208268 KB Output is correct
8 Correct 141 ms 215648 KB Output is correct
9 Correct 275 ms 212308 KB Output is correct
10 Correct 1518 ms 204112 KB Output is correct
11 Correct 1174 ms 206528 KB Output is correct
12 Correct 787 ms 212372 KB Output is correct
13 Incorrect 124 ms 215124 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 110 ms 203348 KB Output is correct
2 Correct 95 ms 208460 KB Output is correct
3 Correct 568 ms 200280 KB Output is correct
4 Correct 682 ms 209780 KB Output is correct
5 Correct 1516 ms 198484 KB Output is correct
6 Correct 569 ms 202228 KB Output is correct
7 Correct 453 ms 208268 KB Output is correct
8 Correct 141 ms 215648 KB Output is correct
9 Correct 275 ms 212308 KB Output is correct
10 Correct 1518 ms 204112 KB Output is correct
11 Correct 1174 ms 206528 KB Output is correct
12 Correct 787 ms 212372 KB Output is correct
13 Incorrect 124 ms 215124 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 84 ms 198480 KB Output is correct
2 Correct 90 ms 198032 KB Output is correct
3 Correct 84 ms 198484 KB Output is correct
4 Correct 86 ms 198424 KB Output is correct
5 Correct 87 ms 198480 KB Output is correct
6 Correct 88 ms 198224 KB Output is correct
7 Correct 85 ms 198516 KB Output is correct
8 Correct 85 ms 198224 KB Output is correct
9 Correct 84 ms 198596 KB Output is correct
10 Correct 87 ms 198316 KB Output is correct
11 Correct 85 ms 198480 KB Output is correct
12 Correct 88 ms 198484 KB Output is correct
13 Incorrect 82 ms 198480 KB Output isn't correct
14 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 94 ms 198224 KB Output is correct
2 Correct 1070 ms 198228 KB Output is correct
3 Correct 85 ms 198224 KB Output is correct
4 Correct 83 ms 198048 KB Output is correct
5 Correct 77 ms 198224 KB Output is correct
6 Correct 191 ms 198120 KB Output is correct
7 Correct 84 ms 198232 KB Output is correct
8 Correct 103 ms 198140 KB Output is correct
9 Correct 498 ms 198224 KB Output is correct
10 Correct 1431 ms 198228 KB Output is correct
11 Correct 101 ms 198228 KB Output is correct
12 Correct 84 ms 198224 KB Output is correct
13 Correct 317 ms 198228 KB Output is correct
14 Correct 94 ms 198228 KB Output is correct
15 Correct 130 ms 198228 KB Output is correct
16 Correct 627 ms 198008 KB Output is correct
17 Correct 691 ms 198228 KB Output is correct
18 Correct 928 ms 198228 KB Output is correct
19 Correct 125 ms 198228 KB Output is correct
20 Correct 1428 ms 198220 KB Output is correct
21 Correct 110 ms 203348 KB Output is correct
22 Correct 95 ms 208460 KB Output is correct
23 Correct 568 ms 200280 KB Output is correct
24 Correct 682 ms 209780 KB Output is correct
25 Correct 1516 ms 198484 KB Output is correct
26 Correct 569 ms 202228 KB Output is correct
27 Correct 453 ms 208268 KB Output is correct
28 Correct 141 ms 215648 KB Output is correct
29 Correct 275 ms 212308 KB Output is correct
30 Correct 1518 ms 204112 KB Output is correct
31 Correct 1174 ms 206528 KB Output is correct
32 Correct 787 ms 212372 KB Output is correct
33 Incorrect 124 ms 215124 KB Output isn't correct
34 Halted 0 ms 0 KB -