Submission #674019

# Submission time Handle Problem Language Result Execution time Memory
674019 2022-12-22T14:54:52 Z Cookie Miners (IOI07_miners) C++14
100 / 100
164 ms 111948 KB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define vt vector
#define se second
#define fi first
#define pb push_back
int n;
int aa[100001];
int d[100001][4][4][4][4];
int get(int p){
    if(p == 0)return(0);
    return(1 << (p - 1));
}
int solve(int id, int a, int b, int c, int dd){
    if(id == n)return(0);
    if(d[id][a][b][c][dd] != -1)return(d[id][a][b][c][dd]);

    int crmask = (get(a)) | (get(b)) | (get(aa[id]));
    crmask = max(crmask, 1 << (aa[id] - 1));
    
    int cr = 0;
    cr = max(cr, solve(id + 1, b, aa[id], c, dd) + __builtin_popcount(crmask));
    crmask = (get(c)) | (get(dd)) | (get(aa[id])); 

    
    cr = max(cr, solve(id + 1, a, b, dd, aa[id]) + __builtin_popcount(crmask));
    d[id][a][b][c][dd] = cr;
    return(cr);
}
int main()
{
   ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n;
    
    for(int i = 0; i < n; i++){
        char c; cin >> c;
        if(c == 'M')aa[i] = 1;
        else if(c == 'B')aa[i] = 2;
        else aa[i] = 3;
        
    }
    memset(d, -1, sizeof(d));
    solve(0, 0, 0, 0, 0);
    cout << d[0][0][0][0][0];
    
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 36 ms 100412 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 37 ms 100424 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 36 ms 100428 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 36 ms 100392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 36 ms 100440 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 43 ms 100472 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 39 ms 100560 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 42 ms 100964 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 54 ms 101616 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 99 ms 103364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 112 ms 109004 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 164 ms 111948 KB Output is correct