제출 #833527

#제출 시각아이디문제언어결과실행 시간메모리
833527vjudge1Bomb (IZhO17_bomb)C++17
24 / 100
39 ms16092 KiB
#include<bits/stdc++.h>
using namespace std;
 
#define IOS ios_base::sync_with_stdio(0); cin.tie(0);
#define int long long
#define pb push_back
#define fi first
#define se second
#define mp make_pair
 
const int mod = 1e9 + 7;
const int maxn = 2505;

int n, m;
char grid[maxn][maxn];

void solve(){
    if(n == 1 || m == 1){
        if(n == 1){
            //vector<int> cnt;
            int i = 1;
            int mini = LLONG_MAX;
            for(; i <= m; i++){
                int tmp;
                if(grid[1][i] == '1'){
                    tmp = 1;
                    while(grid[1][i + 1] == '1'){
                        tmp++;
                        i++;
                    }
                }else{
                    continue;
                }
                //cnt.pb(tmp);
                mini = min(mini, tmp);
            }
            cout << mini << endl;
        }else{
            int i = 1;
            int mini = LLONG_MAX;
            for(; i <= n; i++){
                int tmp;
                if(grid[i][1] == '1'){
                    tmp = 1;
                    while(grid[i + 1][1] == '1'){
                        tmp++;
                        i++;
                    }
                }else{
                    continue;
                }
                //cnt.pb(tmp);
                mini = min(mini, tmp);
            }
            cout << mini << endl;
        }
        return;
    }else{
        //cek tiap baris
        int minsbaris = LLONG_MAX;
        for(int i = 1; i <= n; i++){
            int j = 1;
            int mini = LLONG_MAX;
            for(; j <= m; j++){
                int tmp;
                if(grid[i][j] == '1'){
                    tmp = 1;
                    while(grid[i][j + 1] == '1'){
                        tmp++;
                        j++;
                    }
                }else{
                    continue;
                }
                mini = min(mini, tmp);
            }
            minsbaris = min(minsbaris, mini);
        }

        //cek tiap kolom
        int minkolom = LLONG_MAX;
        for(int i = 1; i <= m; i++){
            int j = 1;
            int mini = LLONG_MAX;
            for(; j <= n; j++){
                int tmp;
                if(grid[j][i] == '1'){
                    tmp = 1;
                    while(grid[j + 1][i] == '1'){
                        tmp++;
                        j++;
                    }
                }else{
                    continue;
                }
                mini = min(mini, tmp);
            }
            minkolom = min(minkolom, mini);
        }

        //cout << "minsbaris = " << minsbaris << " minkolom = " << minkolom << endl;
        cout << minkolom * minsbaris << endl;
    }
}
 
int32_t main()
{
    IOS
    cin >> n >> m;
    string s[n + 1];
    for(int i = 1; i <= n; i++){
        cin >> s[i];
    }

    
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            grid[i][j] = s[i][j - 1];
        }
    }

    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...