Submission #770406

#TimeUsernameProblemLanguageResultExecution timeMemory
770406PlurmCopy and Paste 3 (JOI22_copypaste3)C++11
6 / 100
15 ms340 KiB
#include <bits/stdc++.h>
using namespace std;

long long dp[2505];
int main() {
    int n;
    string s;
    int a, b, c;
    cin >> n >> s >> a >> b >> c;
    if (n == 3) {
        set<char> st;
        st.insert(s[0]);
        st.insert(s[1]);
        st.insert(s[2]);
        if (st.size() == 3)
            cout << 3ll * a << endl;
        else if (st.size() == 2)
            cout << min(3ll * a, 2ll * a + b + 2ll * c) << endl;
        else
            cout << min({3ll * a, 2ll * a + b + 2ll * c, a + b + 3ll * c})
                 << endl;
    } else {
        dp[1] = a;
        for (int i = 2; i <= n; i++) {
            dp[i] = dp[i - 1] + a;
            for (int j = 1; j < i; j++) {
                dp[i] = min(dp[i], dp[j] + dp[i - j]);
                dp[i] = min(dp[i], dp[j] + b + 1ll * c * (i / j) + dp[i % j]);
            }
        }
        cout << dp[n] << endl;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...