| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 28461 | 슈퍼스타 tlwpdus (#68) | Oriental P.A.D.A.K (FXCUP2_padak) | C++11 | 356 ms | 19184 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
int n, m, k, b, z;
bool visit[1000100];
int cnt[1000100], tcnt[1000100];
int px[] = {1,0,-1,0}, py[] = {0,1,0,-1};
bool ok(int x, int y) {
	return x>=0&&x<n&&y>=0&&y<m;
}
int main() {
	int i;
	scanf("%d%d%d%d%d",&n,&m,&k,&b,&z);
	queue<pii> qu;
	for (i=0;i<k;i++) {
		int a, b;
		scanf("%d%d",&a,&b); --a; --b;
		qu.push(pii(0,a*m+b)); visit[a*m+b] = 1;
	}
	int md = 0;
	while(!qu.empty()) {
		pii tmp = qu.front(); qu.pop();
		int here = tmp.second, d = tmp.first;
		cnt[d]++; tcnt[d]++; md = max(md,d);
		int x = here/m, y = here%m;
		for (i=0;i<4;i++) {
			int nx = x+px[i], ny = y+py[i];
			if (!ok(nx,ny)||visit[nx*m+ny]) continue;
			qu.push(pii(d+1,nx*m+ny)); visit[nx*m+ny] = 1;
		}
	}
	int maxi = 0; int q = 1;
	for (i=0;i<=md;i++) {
		q = max(q,i+1);
		int rem = z;
		while(q<=md&&rem) {
			int v = min(rem,cnt[q]);
			rem -= v;
			cnt[q] -= v;
			maxi += v;
			if (!cnt[q]) q++;
		}
	}
	for (i=0;i<=md;i++) cnt[i] = tcnt[i];
	int mini = 0; q = md;
	for (i=0;i<=md;i++) {
		int rem = z;
		while(q>i&&rem) {
			int v = min(rem,cnt[q]);
			cnt[q] -= v;
			rem -= v;
			mini += v;
			if (!cnt[q]) q--;
		}
	}
	printf("%d %d\n",mini,maxi);
    return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
