| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 28593 | Official Fan of ACG (#68) | Oriental P.A.D.A.K (FXCUP2_padak) | C++14 | 46 ms | 14488 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <cstdio>
#include <queue>
#include <map>
#include <deque>
#include <tuple>
using namespace std;
typedef pair<int, int> pii;
const int dx[] = { 1, 0, -1, 0 };
const int dy[] = { 0, -1, 0, 1 };
int n, m, k, b, z;
int arr[1024][1024];
queue<pii> que;
deque<int> deq, deq2;
map<int, int> cnt;
void bfs()
{
	while (!que.empty()) {
		int r, c;
		tie(r, c) = que.front();
		que.pop();
		for (int k = 0; k < 4; k++) {
			int nr = r + dy[k], nc = c + dx[k];
			if (nr < 0 || nr >= n || nc < 0 || nc >= m) continue;
			if (arr[nr][nc]) continue;
			que.push({ nr, nc });
			arr[nr][nc] = arr[r][c] + 1;
			deq.push_back(arr[nr][nc]);
			deq2.push_back(arr[nr][nc]);
		}
	}
}
int main()
{
	scanf("%d%d%d%d%d", &n, &m, &k, &b, &z);
	for (int i = 0; i < k; i++) {
		int r, c;
		scanf("%d%d", &r, &c);
		--r, --c;
		que.push({ r, c });
		arr[r][c] = 1;
	}
	bfs();
	int scnt = 0, lcnt = 0, t;
	t = 2;
	while (!deq.empty()) {
		for (int i = 0; i < z; i++) {
			if (deq.empty()) break;
			deq.pop_front();
			lcnt++;
		}
		while (!deq.empty() && deq.front() <= t)
			deq.pop_front();
		++t;
	}
	t = 2;
	while (!deq2.empty()) {
		for (int i = 0; i < z; i++) {
			if (deq2.empty()) break;
			deq2.pop_back();
			scnt++;
		}
		while (!deq2.empty() && deq2.front() <= t)
			deq2.pop_front();
		++t;
	}
	printf("%d %d\n", scnt, lcnt);	
	return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
