Submission #1336914

#TimeUsernameProblemLanguageResultExecution timeMemory
1336914NipphitchJOI 문장 (JOI14_ho_t1)C++20
100 / 100
82 ms1420 KiB
#include <bits/stdc++.h>
using namespace std;
const int N=1005;

int n,m,ans,mx;
char a[N][N],b[5][5];

bool check(int i,int j){
    if(i+1>n || j+1>m) return false;
    if(a[i][j]==b[1][1] && a[i+1][j]==b[2][1] && a[i][j+1]==b[1][2] && a[i+1][j+1]==b[2][2]) return true;
    else return false;
}

signed main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin >> a[i][j];
    for(int i=1;i<=2;i++) for(int j=1;j<=2;j++) cin >> b[i][j];
    for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(check(i,j)) ans++;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            char tmp1=a[i][j];
            for(char c:{'J','O','I'}){
                if(c==tmp1) continue;
                int sum=0;
                for(int y=i-1;y<=i;y++){
                    for(int x=j-1;x<=j;x++){
                        bool b1=check(y,x);
                        a[i][j]=c;
                        bool b2=check(y,x);
                        if(!b1 && b2) sum++;
                        else if(b1 && !b2) sum--;
                        a[i][j]=tmp1;
                    }
                }
                mx=max(mx,sum);
            }
        }
    }
    cout << ans+mx;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...