Submission #963948

#TimeUsernameProblemLanguageResultExecution timeMemory
963948nguyentunglam축구 경기장 (IOI23_soccer)C++17
25 / 100
503 ms59968 KiB
#include "soccer.h" #include<bits/stdc++.h> using namespace std; const int N = 2010; int n; bool a[N][N]; vector<int> arr[N]; int check_valid() { for(int col = 0; col < n; col++) { for(int row = 0; row < n; row++) if (a[row][col] == 0) arr[col].push_back(row); } int st = 0; while (st < n && arr[st].empty()) st++; if (st == n) return 0; int ed = st; while (ed < n && !arr[ed].empty()) ed++; ed--; for(int i = 1; i < st; i++) if (!arr[i].empty()) return 0; for(int i = ed + 1; i < n; i++) if (!arr[i].empty()) return 0; for(int i = st; i <= ed; i++) if (arr[i].size() != arr[i].back() - arr[i][0] + 1) return 0; int cnt = 0; for(int i = st; i <= ed; i++) cnt += arr[i].size(); int L = max(arr[st][0], arr[ed][0]); int R = min(arr[st].back(), arr[ed].back()); while (st <= ed) { if (arr[st].size() <= arr[ed].size()) { if (arr[st][0] <= L && arr[st].back() >= R) { L = arr[st][0]; R = arr[st].back(); st++; } else return 0; } else { if (arr[ed][0] <= L && arr[ed].back() >= R) { L = arr[ed][0]; R = arr[ed].back(); ed--; } else return 0; } } return cnt; } int biggest_stadium(int N, std::vector<std::vector<int>> F) { n = N; for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) a[i][j] = F[i][j]; return check_valid(); } #ifdef ngu int main() { freopen ("task.inp", "r", stdin); freopen ("task.out", "w", stdout); int N; assert(1 == scanf("%d", &N)); std::vector<std::vector<int>> F(N, std::vector<int>(N)); for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { assert(1 == scanf("%d", &F[i][j])); } } fclose(stdin); int res = biggest_stadium(N, F); printf("%d\n", res); fclose(stdout); return 0; } #endif // ngu

Compilation message (stderr)

soccer.cpp: In function 'int check_valid()':
soccer.cpp:23:3: warning: this 'while' clause does not guard... [-Wmisleading-indentation]
   23 |   while (ed < n && !arr[ed].empty()) ed++; ed--;
      |   ^~~~~
soccer.cpp:23:44: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'while'
   23 |   while (ed < n && !arr[ed].empty()) ed++; ed--;
      |                                            ^~
soccer.cpp:26:51: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and '__gnu_cxx::__alloc_traits<std::allocator<int>, int>::value_type' {aka 'int'} [-Wsign-compare]
   26 |   for(int i = st; i <= ed; i++) if (arr[i].size() != arr[i].back() - arr[i][0] + 1) return 0;
      |                                     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...