제출 #1195392

#제출 시각아이디문제언어결과실행 시간메모리
1195392mannshah1211축구 경기장 (IOI23_soccer)C++20
25 / 100
208 ms31912 KiB
#include "soccer.h"
#include <bits/stdc++.h>

using namespace std;

int biggest_stadium(int n, vector<vector<int>> f) {
  vector<pair<int, int>> ranges_r, ranges_c;
  for (int i = 0; i < n; i++) {
    int mx = 0, mn = n, cnt = 0;
    for (int j = 0; j < n; j++) {
      if (f[i][j] == 0) {
        mx = max(mx, j);
        mn = min(mn, j);
        cnt++;
      }
    }
    if (mx - mn + 1 != cnt && cnt != 0) {
      return 0;
    }
    ranges_r.emplace_back(mn, mx);
  }
  sort(ranges_r.begin(), ranges_r.end(), [&](pair<int, int> x, pair<int, int> y) {
    return (x.second - x.first < y.second - y.first);
  });
  for (int i = 0; i < int(ranges_r.size()) - 1; i++) {
    auto [a, b] = ranges_r[i];
    auto [c, d] = ranges_r[i + 1];
    if (a >= c && b <= d) {
      continue;
    }
    if (c >= a && d <= b) {
      continue;
    }
    return 0;
  }
  for (int j = 0; j < n; j++) {
    int mx = 0, mn = n, cnt = 0;
    for (int i = 0; i < n; i++) {
      if (f[i][j] == 0) {
        mx = max(mx, i);
        mn = min(mn, i);
        cnt++;
      }
    }
    if (mx - mn + 1 != cnt && cnt != 0) {
      return 0;
    }
    ranges_c.emplace_back(mn, mx);
  }
  sort(ranges_c.begin(), ranges_c.end(), [&](pair<int, int> x, pair<int, int> y) {
    return (x.second - x.first < y.second - y.first);
  });
  for (int i = 0; i < int(ranges_c.size()) - 1; i++) {
    auto [a, b] = ranges_c[i];
    auto [c, d] = ranges_c[i + 1];
    if (a >= c && b <= d) {
      continue;
    }
    if (c >= a && d <= b) {
      continue;
    }
    return 0;
  }
  int tot = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      tot += (f[i][j] == 0);
    }
  }
  return tot;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...