/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 540.0 KiB
#2 Accepted 19ms 1.297 MiB
#3 Accepted 18ms 1.004 MiB
#4 Accepted 18ms 1.027 MiB
#5 Accepted 19ms 1.027 MiB
#6 Accepted 19ms 1.047 MiB
#7 Accepted 17ms 1.066 MiB
#8 Accepted 19ms 1.027 MiB
#9 Accepted 19ms 1.027 MiB
#10 Accepted 18ms 844.0 KiB
#11 Accepted 18ms 1.027 MiB
#12 Accepted 19ms 1.043 MiB
#13 Accepted 19ms 1.055 MiB
#14 Accepted 19ms 1.027 MiB
#15 Accepted 19ms 1.062 MiB
#16 Accepted 19ms 1.027 MiB
#17 Accepted 18ms 1.027 MiB
#18 Accepted 20ms 1.027 MiB
#19 Accepted 23ms 1.055 MiB
#20 Accepted 19ms 1.027 MiB
#21 Accepted 19ms 1.043 MiB
#22 Accepted 34ms 5.98 MiB
#23 Accepted 27ms 5.316 MiB
#24 Accepted 33ms 5.883 MiB
#25 Accepted 27ms 5.281 MiB
#26 Accepted 40ms 5.91 MiB
#27 Accepted 31ms 6.016 MiB
#28 Accepted 25ms 5.176 MiB
#29 Accepted 31ms 5.969 MiB
#30 Accepted 28ms 5.387 MiB
#31 Accepted 32ms 5.707 MiB
#32 Accepted 16ms 4.527 MiB
#33 Accepted 17ms 4.324 MiB
#34 Accepted 16ms 4.52 MiB
#35 Accepted 17ms 4.77 MiB
#36 Accepted 16ms 4.527 MiB
#37 Accepted 13ms 4.77 MiB
#38 Accepted 19ms 4.527 MiB
#39 Accepted 14ms 4.52 MiB
#40 Accepted 14ms 4.551 MiB
#41 Accepted 14ms 4.527 MiB
#42 Accepted 49ms 40.27 MiB
#43 Accepted 49ms 40.266 MiB
#44 Accepted 57ms 40.445 MiB
#45 Accepted 66ms 40.301 MiB
#46 Accepted 66ms 40.52 MiB
#47 Accepted 67ms 40.312 MiB
#48 Accepted 67ms 40.316 MiB
#49 Accepted 66ms 40.043 MiB
#50 Accepted 65ms 40.062 MiB

Code

// I AM A MUSLIM

#include "bits/stdc++.h"

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

#define fast_io std::ios::sync_with_stdio(0);std::cin.tie(0)
#define lli long long int
#define flush fflush(stdout)
#define line printf("\n")
#define yn(a, b) printf("%s\n", (a) >= (b) ? "Yes":"No")
#define amodm(a, M) (((a)%M+M)%M)
// #define int lli

using pii = std::pair<int,int>;

const int MOD = 1000000007;
const int mxN = 500100;

signed main() {
    int testCases=1;
    scanf("%d",&testCases);
    
    for (int TC = 1; TC <= testCases; TC++) {
        int n;
        scanf("%d",&n);
        int m;
        scanf("%d",&m);
        
        int pre[n][m][26]; memset(pre, 0, sizeof pre);
        int suf[n][m][26]; memset(suf, 0, sizeof suf);
        
        std::vector<std::string> a;
        for (int i = 0; i < n; i++) {
            std::string s;
            std::cin >> s;
            a.push_back(s);
            if (i) {
                for (int j = 0; j < m; j++) {
                    for (int k = 0; k < 26; k++) {
                        pre[i][j][k] = pre[i-1][j][k];
                    }
                }
            }
            for (int j = 0; j < m; j++) {
                pre[i][j][s[j]-'a']++;
            }
        }
        
        for (int i = n-1; i >= 0; i--) {
            std::string s = a[i];
            if (i != n-1) {
                for (int j = 0; j < m; j++) {
                    for (int k = 0; k < 26; k++) {
                        suf[i][j][k] = suf[i+1][j][k];
                    }
                }
            }
            for (int j = 0; j < m; j++) {
                suf[i][j][s[j]-'a']++;
            }
        }
        
        int ans = m;
        for (int i = 0; i < n-1; i++) {
            int cur_ans = 0;
            for (int j = 0; j < m; j++) {
                int pre_mx = 0, suf_mx = 0;
                for (int k = 0; k < 26; k++) pre_mx = std::max(pre_mx, pre[i][j][k]);
                for (int k = 0; k < 26; k++) suf_mx = std::max(suf_mx, suf[i+1][j][k]);
                cur_ans += pre_mx + suf_mx;
            }
            if (ans < cur_ans) ans = cur_ans;
        }
        
        printf("%d\n", ans);
        
    }
    
    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 16:05:17
Judged At
2025-02-17 16:05:17
Judged By
Score
100
Total Time
67ms
Peak Memory
40.52 MiB