Submission #502883

# Submission time Handle Problem Language Result Execution time Memory
502883 2022-01-06T17:13:32 Z tabr Miners (IOI07_miners) C++17
84 / 100
1500 ms 568 KB
#include <bits/stdc++.h>
using namespace std;
#ifdef tabr
#include "library/debug.cpp"
#else
#define debug(...)
#endif

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin >> n;
    string s;
    cin >> s;
    const int inf = (int) 1e9;
    vector dp(4, vector(4, vector(4, vector<int>(4, -inf))));
    dp[0][0][0][0] = 0;
    for (int id = 0; id < n; id++) {
        vector new_dp(4, vector(4, vector(4, vector<int>(4, -inf))));
        int x = (s[id] == 'M' ? 1 : (s[id] == 'F' ? 2 : 3));
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                for (int k = 0; k < 4; k++) {
                    for (int l = 0; l < 4; l++) {
                        set<int> c;
                        c.emplace(x);
                        c.emplace(i);
                        c.emplace(j);
                        c.erase(0);
                        new_dp[x][i][k][l] = max(new_dp[x][i][k][l], dp[i][j][k][l] + (int) c.size());
                        c.clear();
                        c.emplace(x);
                        c.emplace(k);
                        c.emplace(l);
                        c.erase(0);
                        new_dp[i][j][x][k] = max(new_dp[i][j][x][k], dp[i][j][k][l] + (int) c.size());
                    }
                }
            }
        }
        swap(dp, new_dp);
    }
    int ans = 0;
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 4; j++) {
            for (int k = 0; k < 4; k++) {
                for (int l = 0; l < 4; l++) {
                    ans = max(ans, dp[i][j][k][l]);
                }
            }
        }
    }
    cout << ans << '\n';
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 288 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 304 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 312 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 312 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 59 ms 312 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 305 ms 320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 589 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1455 ms 368 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1512 ms 452 KB Time limit exceeded
# Verdict Execution time Memory Grader output
1 Execution timed out 1552 ms 568 KB Time limit exceeded