Submission #403237

# Submission time Handle Problem Language Result Execution time Memory
403237 2021-05-13T00:04:02 Z Lobo Miners (IOI07_miners) C++17
92 / 100
1500 ms 156272 KB
#include <bits/stdc++.h>
 
using namespace std;

const long long INFll = 1e18;
const int INFii = 1e9;
const long long mod = (long long) 1e9 + 7;
typedef long long ll;
typedef int ii;
typedef double dbl;
#define endl '\n'
#define sc second
#define fr first
#define mp make_pair
#define pb push_back

#define maxn 110000
//LEMBRAR DE MUDAR

ii n;
string s;
map<pair<pair<char,char>,pair<char,char>>, ii> dp[maxn];

ii sol(ii i, char a1, char a2, char b1, char b2) {
    if(i == n) return 0;

    if(dp[i].find(mp(mp(a1,a2),mp(b1,b2))) != dp[i].end()) {
        return dp[i][mp(mp(a1,a2),mp(b1,b2))];
    }

    set<char> st1;

    if(a1 != '0') st1.insert(a1);
    if(a2 != '0') st1.insert(a2);
    st1.insert(s[i]);
    ii p1 = st1.size();


    set<char> st2;

    if(b1 != '0') st2.insert(b1);
    if(b2 != '0') st2.insert(b2);
    st2.insert(s[i]);
    ii p2 = st2.size();

    dp[i][mp(mp(a1,a2),mp(b1,b2))] = max(p1 + sol(i+1, s[i], a1, b1, b2), p2 + sol(i+1, a1, a2, s[i], b1));

    return dp[i][mp(mp(a1,a2),mp(b1,b2))];
}

int main() {
    ios::sync_with_stdio(false); cin.tie(0);

    //freopen("in.in", "r", stdin);
    //freopen("____.out", "w", stdout);

    cin >> n;
    cin >> s;

    cout << sol(0, '0', '0', '0', '0') << endl;

}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 5452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 5452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 5452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 5452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 5452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 5476 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 25 ms 7340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 46 ms 11024 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 237 ms 26664 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 642 ms 52664 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1103 ms 121112 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1584 ms 156272 KB Time limit exceeded