/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 31ms 788.0 KiB
#3 Accepted 29ms 788.0 KiB
#4 Accepted 30ms 876.0 KiB
#5 Accepted 29ms 788.0 KiB
#6 Accepted 30ms 788.0 KiB
#7 Accepted 30ms 788.0 KiB
#8 Accepted 30ms 836.0 KiB
#9 Accepted 30ms 832.0 KiB
#10 Accepted 29ms 848.0 KiB
#11 Accepted 29ms 848.0 KiB
#12 Accepted 30ms 788.0 KiB
#13 Accepted 30ms 832.0 KiB
#14 Accepted 29ms 824.0 KiB
#15 Accepted 30ms 836.0 KiB
#16 Accepted 29ms 844.0 KiB
#17 Accepted 30ms 788.0 KiB
#18 Accepted 30ms 848.0 KiB
#19 Accepted 30ms 788.0 KiB
#20 Accepted 31ms 788.0 KiB
#21 Accepted 31ms 836.0 KiB
#22 Accepted 32ms 3.203 MiB
#23 Accepted 27ms 2.531 MiB
#24 Accepted 32ms 3.078 MiB
#25 Accepted 26ms 2.52 MiB
#26 Accepted 36ms 3.781 MiB
#27 Accepted 30ms 3.195 MiB
#28 Accepted 26ms 2.301 MiB
#29 Accepted 31ms 3.062 MiB
#30 Accepted 32ms 3.066 MiB
#31 Accepted 29ms 3.086 MiB
#32 Accepted 54ms 3.09 MiB
#33 Accepted 54ms 3.117 MiB
#34 Accepted 54ms 3.105 MiB
#35 Accepted 53ms 3.113 MiB
#36 Accepted 55ms 3.117 MiB
#37 Accepted 46ms 5.137 MiB
#38 Accepted 46ms 5.133 MiB
#39 Accepted 47ms 5.148 MiB
#40 Accepted 46ms 5.141 MiB
#41 Accepted 47ms 5.152 MiB
#42 Accepted 41ms 10.145 MiB
#43 Accepted 41ms 10.02 MiB
#44 Accepted 40ms 10.176 MiB
#45 Accepted 23ms 4.566 MiB
#46 Accepted 22ms 4.508 MiB
#47 Accepted 22ms 4.52 MiB
#48 Accepted 23ms 4.359 MiB
#49 Accepted 25ms 5.242 MiB
#50 Accepted 25ms 5.043 MiB

Code

#include <bits/stdc++.h>
using namespace std;

#define endl '\n'
#ifdef LOCAL
    #include "debug.h"    
#else
    #define print(...)
    #define printt(...)
#endif

#define int long long

void run(){
    
    int n, m;
    cin >> n >> m;

    vector<string>a(n);
    for( int i = 0 ; i < n ; i++ )
        cin >> a[i];
    
    vector<map<char, int>>mp1(m), mp2(m);
    vector<vector<int>>pref(n, vector<int>(m));
    vector<vector<int>>suff(n, vector<int>(m));

    for( int i = 0 ; i < m ; i++ ) {

        int mx = 0;
        for( int j = 0 ; j < n ; j++ ) {
            mp1[i][a[j][i]]++;

            mx = max(mx, mp1[i][a[j][i]]);

            pref[j][i] = mx;
        }

        mx = 0;
        for( int j = n - 1 ; j + 1 ; j-- ) {
            mp2[i][a[j][i]]++;

            mx = max(mx, mp2[i][a[j][i]]);

            suff[j][i] = mx;
        }
    }
    
    int ans = 0;
    for( int i = 0 ; i < m ; i++ ) {
        ans += suff[0][i];
    }

    for( int i = 0 ; i + 1 < n ; i++ ) {
        int temp = 0;
        for( int j = 0 ; j < m ; j++ ) {
            temp += pref[i][j] + suff[i + 1][j];
        }
        
        ans = max(ans, temp);
    }

    cout << ans << endl;
}

int32_t main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int t = 1;
    cin >> t;
    
    while( t --> 0 ) 
        run();
    
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1164 Simple character matching game
Contest
Brain Booster #8
Language
C++17 (G++ 13.2.0)
Submit At
2025-02-17 15:08:30
Judged At
2025-02-17 15:08:30
Judged By
Score
100
Total Time
55ms
Peak Memory
10.176 MiB