페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
3500
ms
메모리 제한
2048
MB
Debrecen 도시에 있는 Nagyerdő는 정사각형 모양의 숲으로 개 셀들의 격자로 모델링 가능하다. 격자의 행은 북쪽에서 남쪽으로 부터 까지 번호가 붙어 있고, 격자의 열은 서쪽에서 동쪽으로 부터 까지 번호가 붙어 있다. 격자의 행 열에 있는 셀은 셀 로 부른다.
숲에서 각 셀은 빈 칸이거나 나무가 있다. 숲에서 적어도 하나의 셀은 빈 칸이다.
이 도시의 유명한 스포츠 클럽인 DVSC는 숲에 새로운 축구 경기장을 지으려고 한다. 크기 ()인 경기장은 개의 서로 다른 빈 칸인 셀 의 집합이다. 엄밀하게 이것이 의미하는 것은 다음과 같다.
축구는 경기장의 셀들을 오가며 움직이는 공을 이용해서 경기를 한다. 직선 킥은 다음 두 행동 중 하나로 정의된다.
경기장에 포함되는 임의의 셀에서 경기장에 포함되는 임의의 다른 셀로 최대 번의 직선 킥으로 공을 움직일 수 있는 경우에 경기장이 정상적이라고 한다. 참고로 크기 인 경기장은 모두 정상적이다.
예를 들어 셀 과 에는 나무가 있고 나머지 모든 셀은 빈 칸인 크기 인 숲을 고려하자. 아래 그림은 세 가지 가능한 경기장을 보여준다. 나무가 있는 셀은 어둡게, 경기장에 포함된 셀은 줄무늬로 표현했다.


왼쪽 경기장은 정상적이다. 하지만 가운데 경기장은 정상적이지 않은데, 셀 에서 으로 공을 움직이려면 최소한 번의 직선 킥이 필요하기 때문이다. 오른쪽 경기장도 정상적이지 않은데, 셀 에서 으로 직선 킥으로 공을 움직이는 것이 불가능하기 때문이다.
스포츠 클럽은 가장 큰 정상적인 경기장을 짓고 싶어 한다. 당신은 숲에 존재할 수 있는 정상적인 경기장의 크기 의 최댓값을 구해야 한다.
다음 함수를 구현해야 한다.
int biggest_stadium(int N, int[][] F)
다음 호출을 생각해 보자.
biggest_stadium(5, [[0, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 1, 0, 0]])
이 예에서 다음 그림의 왼쪽은 숲을 나타내고 오른쪽은 크기 인 정상적인 경기장을 나타낸다.


크기가 이상인 정상적인 경기장이 존재하지 않기 때문에 이 함수는 을 리턴해야 한다.
각 서브태스크에 대해 모든 빈 칸 셀로 구성되는 집합이 정상적인 경기장인지 올바르게 판정한다면 서브태스크 점수의 를 얻을 수 있다.
보다 정확하게는 모든 빈 칸 셀로 구성되는 집합이 정상적인 경기장인 각 테스트 케이스에 대해 당신의 점수는 다음과 같다.
모든 빈 칸 셀로 구성되는 집합이 정상적인 경기장이 아닌 각 테스트 케이스에 대해 당신의 점수는 다음과 같다.
각 서브태스크의 최종 점수는 그 서브태스크에 속한 테스트 케이스들의 점수의 최솟값으로 정해진다.
line 1: N line 2 + i (0 <= i < N): F[i][0] F[i][1] ... F[i][N - 1]
샘플 그레이더는 다음 형식으로 답을 출력한다.
line 1: biggest_stadium의 리턴값
5
0 0 0 0 0
1 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
20
International Olympiad in Informatics (IOI) 2023, official task package and official Korean statement.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.