Submission #28439

#TimeUsernameProblemLanguageResultExecution timeMemory
28439ㅁㄴㅇㄹ호 (#68)Oriental P.A.D.A.K (FXCUP2_padak)C++14
0 / 1
63 ms65536 KiB
#include <stdio.h> #include <cstdlib> #include <cstring> #include <algorithm> #include <numeric> #include <string> #include <vector> #include <tuple> #include <queue> using namespace std; struct pos { int x, y; }; queue<pos> q; vector<vector<bool>> chk; int arr[1000000]; int dx[4] = { 1, 0, -1, 0 }; int dy[4] = { 0, 1, 0, -1 }; int main() { //freopen("in", "r", stdin); //freopen("out", "w", stdout); int n, m, k, z, x, y, nx, ny, s, c, i, j; scanf("%d%d%d%*d%d", &n, &m, &k, &z); chk = vector<vector<bool>>(n, vector<bool>(m, 0)); int as = 0; for(i = 0; i<k; i++) { scanf("%d%d", &x, &y); x--; y--; chk[x][y] = 1; q.push({ x, y }); } for(c = 1; !q.empty(); c++) { s = q.size(); for(i = 0; i<s; i++) { x = q.front().x; y = q.front().y; q.pop(); for(j = 0; j<4; j++) { nx = x + dx[j]; ny = y + dy[j]; if(nx<0 || nx>=n || ny<0 || ny>=m || chk[nx][ny]) continue; chk[nx][ny] = 1; arr[as++] = c; q.push({ nx, ny }); } } } sort(arr, arr + as); int r1 = 0, r2 = 0; int p = 0; for(i = 1;; i++) { while(p != as && arr[p] < i) p++; if(p == as) break; r1 += min(z, as - p); p += min(z, as - p); } p = as - 1; for(i = 1;; i++) { for(j = 0; j<z; j++) { if(p == -1 || arr[p] < i) break; r2++; p--; } if(p == -1 || arr[p] < i) break; } printf("%d %d\n", r2, r1); return 0; }

Compilation message (stderr)

padak.cpp: In function 'int main()':
padak.cpp:30:41: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%d%*d%d", &n, &m, &k, &z);
                                         ^
padak.cpp:38:30: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d", &x, &y);
                              ^
#Verdict Execution timeMemoryGrader output
Fetching results...