제출 #550680

#제출 시각아이디문제언어결과실행 시간메모리
550680LucaDantasCultivation (JOI17_cultivation)C++17
30 / 100
875 ms916 KiB
#include <bits/stdc++.h> using namespace std; constexpr int maxr = 41, maxn = 310, inf = 0x3f3f3f3f; int n, r, c; set<int> mark[maxr]; // salvo pra cada linha quais colunas tão ativas struct par { int r, c; } pares[maxn]; int get() { // Calculo a resposta separadamente pra cada linha int minSum = 0, minL = 0, minR = 0; for(int row = 0; row < r; row++) { if(!mark[row].size()) return inf; // pessimo minL = max(minL, *mark[row].begin()); minR = max(minR, c-1 - *mark[row].rbegin()); for(auto it = mark[row].begin(); next(it) != mark[row].end(); ++it) minSum = max(minSum, *next(it) - *it - 1); } return max(minSum, minL + minR); } int main() { scanf("%d %d", &r, &c); scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d %d", &pares[i].r, &pares[i].c), --pares[i].r, --pares[i].c; int ans = inf; for(int cima = 0; cima < r; cima++) { // painting for(int i = 0; i < r; i++) mark[i].clear(); for(int i = 0; i < n; i++) mark[pares[i].r].insert(pares[i].c); for(int row = 1; row < r; row++) for(int j = 1; j <= cima && row - j >= 0; j++) for(int coluna : mark[row]) mark[row-j].insert(coluna); for(int baixo = 0; baixo < r; baixo++) { ans = min(ans, cima + baixo + get()); for(int row = r-2; row >= 0; row--) for(int coluna : mark[row]) mark[row+1].insert(coluna); } } printf("%d\n", ans); }

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

cultivation.cpp: In function 'int main()':
cultivation.cpp:30:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |     scanf("%d %d", &r, &c);
      |     ~~~~~^~~~~~~~~~~~~~~~~
cultivation.cpp:31:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   31 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
cultivation.cpp:33:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   33 |         scanf("%d %d", &pares[i].r, &pares[i].c), --pares[i].r, --pares[i].c;
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...