https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V61LqAf8DFAWu&categoryId=AV5V61LqAf8DFAWu&categoryType=CODE
<코드>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int N, M, ans, cnt;
int map[22][22];
int dist(int x1, int y1, int x2, int y2) { return abs(x2 - x1) + abs(y2 - y1); }
void Init() {
scanf("%d %d", &N, &M);
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
scanf("%d", &map[i][j]);
}
}
ans = -1;
}
void sec(int x, int y, int range) {
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
if (dist(x, y, i, j) <= range && map[i][j]) {
cnt++;
}
}
}
}
int main() {
int T;
scanf("%d", &T);
for (int t = 1; t <= T; t++) {
Init();
for (int k = 1; k <= 2 * N + 1; k++) {
int run_cost = (k*k) + (k - 1)*(k - 1);
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N; j++) {
cnt = 0;
sec(i, j, k - 1);
if (cnt*M - run_cost >= 0) {
ans = max(ans, cnt);
}
}
}
}
printf("#%d %d\n", t, ans);
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[D-14] 비슷한 유형 #1 (cnt위치,vector소팅,visit배열) (0) | 2019.04.01 |
---|---|
[BOJ 14499] 주사위 굴리기 (0) | 2019.03.19 |
[D-28] 알고리즘 추천 문제 (0) | 2019.03.16 |
[BOJ 2606] 바이러스 (0) | 2019.03.16 |
[BOJ 2573] 빙산 (0) | 2019.03.12 |