Submission #28461

#TimeUsernameProblemLanguageResultExecution timeMemory
28461슈퍼스타 tlwpdus (#68)Oriental P.A.D.A.K (FXCUP2_padak)C++11
1 / 1
356 ms19184 KiB
#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)

padak.cpp: In function 'int main()':
padak.cpp:19:36: 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,&b,&z);
                                    ^
padak.cpp:23:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d%d",&a,&b); --a; --b;
                      ^
#Verdict Execution timeMemoryGrader output
Fetching results...