Submission #491623

# Submission time Handle Problem Language Result Execution time Memory
491623 2021-12-03T14:44:35 Z gg123_pe Miners (IOI07_miners) C++17
100 / 100
1422 ms 588 KB
#include <bits/stdc++.h> 
using namespace std; 

typedef pair <pair<char,char>, pair<char,char>> T; 
#define f(i,a,b) for(int i = a; i < b; i++)

int n; 
string s; 

int dif(char a, char b, char c){
    set <char> ra;
    if(a != '0') ra.insert(a);
    if(b != '0') ra.insert(b); 
    if(c != '0') ra.insert(c); 
    return ra.size(); 
}

struct t{ 
    char a = '0', b = '0', c = '0', d = '0';
    int  x = 0; 
}wi;

int main(){
    cin >> n >> s; 

    vector <t> a = {wi}, pos;
    f(i,0,n){
        pos.clear(); 
        map <T, int> m; 
       
       for(t ra: a){
           T WI_1, WI_2;
           int w1_x = ra.x + dif(ra.a, ra.b, s[i]);   
           int w2_x = ra.x + dif(ra.c, ra.d, s[i]); 
           WI_1.first.first = ra.b, WI_1.first.second = s[i], WI_1.second.first = ra.c, WI_1.second.second = ra.d; 
           WI_2.first.first = ra.a, WI_2.first.second = ra.b, WI_2.second.first = ra.d, WI_2.second.second = s[i]; 
          
            m[WI_1] = max(m[WI_1], w1_x);
            m[WI_2] = max(m[WI_2], w2_x);
       }
        for(auto p: m){
            t wi; T w = p.first;
            //cout << w.first.first << " " << w.first.second << " " << w.second.first << " " << w.second.second << endl;  
            wi.x = p.second;
            wi.a = w.first.first, wi.b = w.first.second, wi.c = w.second.first, wi.d = w.second.second; 
            pos.push_back(wi); 
        }
        a.swap(pos); 
    } 
    int ans = 0; 
    for(auto p: a) ans = max(ans, p.x); 
    cout << ans << endl; 

    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 204 KB Output is correct
# 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 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 216 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 16 ms 300 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 27 ms 300 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 137 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 368 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 699 ms 548 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1422 ms 588 KB Output is correct