제출 #833274

#제출 시각아이디문제언어결과실행 시간메모리
833274vjudge1Bomb (IZhO17_bomb)C++17
24 / 100
171 ms24920 KiB
#include <bits/stdc++.h>
using namespace std;

const int MX = 2505;
int N, M;
int A[MX][MX];

int solve(vector<int> v) {
      int mn = 1e9;

      vector<int> lf(v.size()), rg(v.size());

      for(int i = 0; i < v.size(); i++) {
            if(v[i] == 1) {
                  if(i - 1 < 0 || v[i - 1] == 0) lf[i] = i;
                  else lf[i] = lf[i - 1];
            }
      }

      for(int i = v.size() - 1; i >= 0; i--) {
            if(v[i] == 1) {
                  if(i + 1 == v.size() || v[i + 1] == 0) rg[i] = i;
                  else rg[i] = rg[i + 1];
            }
      }

      for(int i = 0; i < v.size(); i++) {
            if(v[i] == 1) {
                  mn = min(mn, rg[i] - lf[i] + 1);
            }
      }

      return mn;
}

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

      cin >> N >> M;
      for(int i = 0; i < N; i++) {
            for(int j = 0; j < M; j++) {
                  char c;
                  cin >> c;
                  if(c == '1') A[i][j] = 1;
            }
      }

      int minRow = 1e9, minCol = 1e9;
      for(int i = 0; i < N; i++) {
            vector<int> v;
            for(int j = 0; j < M; j++) v.push_back(A[i][j]);
            minRow = min(minRow, solve(v));
      }

      for(int j = 0; j < M; j++) {
            vector<int> v;
            for(int i = 0; i < N; i++) v.push_back(A[i][j]);
            minCol = min(minCol, solve(v));
      }

      cout << minRow * minCol << '\n';
}

컴파일 시 표준 에러 (stderr) 메시지

bomb.cpp: In function 'int solve(std::vector<int>)':
bomb.cpp:13:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |       for(int i = 0; i < v.size(); i++) {
      |                      ~~^~~~~~~~~~
bomb.cpp:22:28: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |                   if(i + 1 == v.size() || v[i + 1] == 0) rg[i] = i;
      |                      ~~~~~~^~~~~~~~~~~
bomb.cpp:27:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |       for(int i = 0; i < v.size(); i++) {
      |                      ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...