Submission #863052

# Submission time Handle Problem Language Result Execution time Memory
863052 2023-10-19T14:07:10 Z boris_mihov Copy and Paste 3 (JOI22_copypaste3) C++17
15 / 100
3000 ms 14808 KB
#include <algorithm>
#include <iostream>
#include <numeric>
#include <cassert>
#include <vector>

typedef long long llong;
const int MAXN = 2500 + 10;
const int INF  = 1e9;

int n;
int a, b, c;
char s[MAXN];
llong dp[MAXN][MAXN];
bool bl[MAXN][MAXN];
int kmpF[MAXN];

llong f(int l, int r)
{
    // std::cout << "call: " << l << ' ' << r << '\n' << std::flush;
    if (l == r)
    {
        return a;
    }

    if (bl[l][r])
    {
        return dp[l][r];
    }

    bl[l][r] = true;
    dp[l][r] = std::min(f(l + 1, r) + a, f(l, r - 1) + a);

    for (int prefix = l ; prefix < r ; ++prefix)
    {
        // std::cout << "here: " << l << ' ' << r << ' ' << prefix << '\n';
        // kmpF[prefix - l + 1] = kmpF[prefix - l];
        // while (kmpF[prefix - l + 1] > 0 && s[l + kmpF[prefix - l + 1]] != s[prefix])
        // {
        //     kmpF[prefix - l + 1] = kmpF[l + kmpF[prefix - l + 1] - 1];
        // }

        // if (s[l + kmpF[prefix - l + 1]] == s[prefix]) 

        llong cost = f(l, prefix) + b + c;
        for (int j = prefix + 1 ; j <= r ; ++j)
        {
            bool match = true;
            for (int k = 0 ; k <= prefix - l ; ++k)
            {
                if (s[l + k] != s[j + k])
                {
                    match = false;
                    break;
                }
            }

            if (match)
            {
                cost += c;
                j += prefix - l;
            } else
            {
                cost += a;
            }
        }

        dp[l][r] = std::min(dp[l][r], cost);
    }

    return dp[l][r];
}

void solve()
{
    std::cout << f(1, n) << '\n';
}

void input()
{
    std::cin >> n;
    std::cin >> s + 1;
    std::cin >> a >> b >> c;
}

void fastIOI()
{
    std::ios_base :: sync_with_stdio(0);
    std::cout.tie(nullptr);
    std::cin.tie(nullptr);
}

int main()
{
    fastIOI();
    input();
    solve();

    return 0;
}

Compilation message

copypaste3.cpp: In function 'void input()':
copypaste3.cpp:82:19: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   82 |     std::cin >> s + 1;
      |                 ~~^~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 1 ms 2392 KB Output is correct
9 Correct 1 ms 2516 KB Output is correct
10 Correct 1 ms 2392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 1 ms 2396 KB Output is correct
3 Execution timed out 3079 ms 14808 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 1 ms 2392 KB Output is correct
9 Correct 1 ms 2516 KB Output is correct
10 Correct 1 ms 2392 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 4556 KB Output is correct
14 Correct 1 ms 2396 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 1 ms 4444 KB Output is correct
17 Correct 1 ms 2392 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 1 ms 4444 KB Output is correct
20 Correct 0 ms 2396 KB Output is correct
21 Correct 1 ms 4440 KB Output is correct
22 Correct 1 ms 4444 KB Output is correct
23 Correct 1 ms 4440 KB Output is correct
24 Correct 1 ms 4696 KB Output is correct
25 Correct 1 ms 4552 KB Output is correct
26 Correct 1 ms 4444 KB Output is correct
27 Correct 1 ms 4444 KB Output is correct
28 Correct 1 ms 4444 KB Output is correct
29 Correct 1 ms 4560 KB Output is correct
30 Correct 1 ms 4444 KB Output is correct
31 Correct 1 ms 4444 KB Output is correct
32 Correct 1 ms 4444 KB Output is correct
33 Correct 1 ms 4440 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 0 ms 2516 KB Output is correct
36 Correct 1 ms 2396 KB Output is correct
37 Correct 0 ms 2396 KB Output is correct
38 Correct 1 ms 4560 KB Output is correct
39 Correct 1 ms 4444 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 1 ms 2392 KB Output is correct
9 Correct 1 ms 2516 KB Output is correct
10 Correct 1 ms 2392 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 4556 KB Output is correct
14 Correct 1 ms 2396 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 1 ms 4444 KB Output is correct
17 Correct 1 ms 2392 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 1 ms 4444 KB Output is correct
20 Correct 0 ms 2396 KB Output is correct
21 Correct 1 ms 4440 KB Output is correct
22 Correct 1 ms 4444 KB Output is correct
23 Correct 1 ms 4440 KB Output is correct
24 Correct 1 ms 4696 KB Output is correct
25 Correct 1 ms 4552 KB Output is correct
26 Correct 1 ms 4444 KB Output is correct
27 Correct 1 ms 4444 KB Output is correct
28 Correct 1 ms 4444 KB Output is correct
29 Correct 1 ms 4560 KB Output is correct
30 Correct 1 ms 4444 KB Output is correct
31 Correct 1 ms 4444 KB Output is correct
32 Correct 1 ms 4444 KB Output is correct
33 Correct 1 ms 4440 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 0 ms 2516 KB Output is correct
36 Correct 1 ms 2396 KB Output is correct
37 Correct 0 ms 2396 KB Output is correct
38 Correct 1 ms 4560 KB Output is correct
39 Correct 1 ms 4444 KB Output is correct
40 Correct 10 ms 4700 KB Output is correct
41 Incorrect 325 ms 7080 KB Output isn't correct
42 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 1 ms 2392 KB Output is correct
9 Correct 1 ms 2516 KB Output is correct
10 Correct 1 ms 2392 KB Output is correct
11 Correct 1 ms 4444 KB Output is correct
12 Correct 1 ms 4444 KB Output is correct
13 Correct 1 ms 4556 KB Output is correct
14 Correct 1 ms 2396 KB Output is correct
15 Correct 1 ms 4444 KB Output is correct
16 Correct 1 ms 4444 KB Output is correct
17 Correct 1 ms 2392 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 1 ms 4444 KB Output is correct
20 Correct 0 ms 2396 KB Output is correct
21 Correct 1 ms 4440 KB Output is correct
22 Correct 1 ms 4444 KB Output is correct
23 Correct 1 ms 4440 KB Output is correct
24 Correct 1 ms 4696 KB Output is correct
25 Correct 1 ms 4552 KB Output is correct
26 Correct 1 ms 4444 KB Output is correct
27 Correct 1 ms 4444 KB Output is correct
28 Correct 1 ms 4444 KB Output is correct
29 Correct 1 ms 4560 KB Output is correct
30 Correct 1 ms 4444 KB Output is correct
31 Correct 1 ms 4444 KB Output is correct
32 Correct 1 ms 4444 KB Output is correct
33 Correct 1 ms 4440 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 0 ms 2516 KB Output is correct
36 Correct 1 ms 2396 KB Output is correct
37 Correct 0 ms 2396 KB Output is correct
38 Correct 1 ms 4560 KB Output is correct
39 Correct 1 ms 4444 KB Output is correct
40 Correct 10 ms 4700 KB Output is correct
41 Incorrect 325 ms 7080 KB Output isn't correct
42 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2396 KB Output is correct
2 Correct 0 ms 2396 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 0 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 1 ms 2392 KB Output is correct
9 Correct 1 ms 2516 KB Output is correct
10 Correct 1 ms 2392 KB Output is correct
11 Correct 1 ms 4440 KB Output is correct
12 Correct 1 ms 2396 KB Output is correct
13 Execution timed out 3079 ms 14808 KB Time limit exceeded
14 Halted 0 ms 0 KB -