Submission #414635

# Submission time Handle Problem Language Result Execution time Memory
414635 2021-05-30T19:02:45 Z AlexRex0 Miners (IOI07_miners) C++14
100 / 100
237 ms 135316 KB
#include<bits/stdc++.h>
using namespace std;

int n;
int food[100002];

bool v[100002][4][4][4][4];
int dp[100002][4][4][4][4];

int diff(int a, int b, int c){
    int cont = 1;
    if(a > c){
        swap(a, c);
    }
    if(a > b){
        swap(a, b);
    }
    if(b > c){
        swap(b, c);
    }
    if(a != b){
        cont++;
    }
    if(c != b){
        cont++;
    }
    if(a == 0){
        cont--;
    }
    return cont;
}

int coal(int i, int x1, int x2, int y1, int y2){
    if(i == n + 1) return 0;
    if(!v[i][x1][x2][y1][y2]){
        v[i][x1][x2][y1][y2] = true;
        int aux = max(coal(i + 1, food[i], x1, y1, y2) + diff(food[i], x1, x2),
                      coal(i + 1, x1, x2, food[i], y1) + diff(food[i], y1, y2));
        dp[i][x1][x2][y1][y2] = aux;
    }
    return dp[i][x1][x2][y1][y2];
}

int main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    cin >> n;
    for(int i = 1; i <= n; ++i){
        char asd;
        cin >> asd;
        if(asd == 'F'){
            food[i] = 1;
        }else{
            if(asd == 'M'){
                food[i] = 2;
            }else{
                food[i] = 3;
            }
        }
    }
    cout << coal(1, 0, 0, 0, 0);
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 1612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 6988 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 22 ms 13828 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 74 ms 34148 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 145 ms 101524 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 237 ms 135316 KB Output is correct