생태계
시간 제한1초메모리 제한128 MB
먹이사슬 순서로 번호가 매겨진 각 종의 개체수와 개체당 먹이량이 주어질 때, 번호가 작은 종부터 차례로 먹이 활동을 시뮬레이션하여 살아남은 개체수를 구한다.
문제
대규모 기름 유출과 같은 환경 재해를 다룰 때 흔히 해당 지역 생태계가 입은 피해가 언급된다. 생태계의 한 가지 측면은 수많은 동식물이 생존(또는 개체 수 조절)을 위해 서로에게 의존한다는 점이다. 따라서 먹이 사슬에 오염 물질이 유입되면 온갖 부작용이 생길 수 있다. 어떤 동물이 오염 물질의 직접적인 영향을 받지 않더라도, 동물성 플랑크톤이 몰살당하면 청어가 먹을 것이 없어지고, 결국 청어를 먹는 물개도 먹이가 부족해진다.
생태계를 다음과 같이 모형화한다. 번부터 번까지 번호가 붙은 개의 종이 있다. 각 종은 먹이 사슬에서 자기보다 아래에 있는 종, 즉 번호가 더 작은 종만 잡아먹는다. 각 종에 대해 재해 이후 남은 현재 개체 수와 식단이 주어진다. 식단이란 한 개체가 살아남기 위해 번호가 더 작은 각 종의 개체를 몇 마리 먹어야 하는지를 뜻한다. 식단은 균형 잡힌 것이어서 대체할 수 없다. 예를 들어 물개 한 마리가 반드시 청어 한 마리와 오징어 한 마리를 먹어야 한다면, 청어 두 마리와 오징어 반 마리(또는 오징어 열 마리)로는 대신할 수 없다.
어떤 종이 먹이를 먹으려 할 때 필요한 먹이원 중 하나라도 이미 바닥났다면, 식단을 채우지 못한 개체들은 굶어 죽는다(이때 그 개체들이 먹으려던 다른 먹이는 잡아먹히지 않고 남는다). 모형을 명확히 하기 위해 종은 번호가 작은 순서대로 먹이를 먹는다. 번호가 작은 포식자가 큰 포식자보다 먼저 먹으므로 서로 공유하는 먹이에 먼저 접근할 수 있다. 예컨대 물개(가령 번)와 돌고래(가령 번)가 모두 청어를 필요로 하는데 물개가 남은 청어를 모두 먹어 치웠다면, 돌고래는 모두 죽는다.
각 종에서 몇 마리가 살아남는지를 구하라.
입력
첫 번째 줄에 데이터 집합의 개수 가 주어진다. 이어서 개의 데이터 집합이 다음 형식으로 주어진다.
각 데이터 집합의 첫 번째 줄에는 종의 개수를 나타내는 정수 ()이 주어진다.
그다음 개의 줄이 이어진다. 번째 줄은 번 종을 설명하며 개의 정수를 담는다. 첫 번째 정수는 번 종의 현재 개체 수이다. 나머지 개의 정수는 번 종 각각에 대해, 번 종의 한 개체가 살아남기 위해 그 종의 개체를 몇 마리 먹어야 하는지를 순서대로 나타낸다.
출력
각 데이터 집합마다 먼저 Data Set x: 한 줄을 출력한다. 여기서 는 데이터 집합의 번호이며 부터 시작한다. 그다음 번 종이 한 단위 시간 뒤에 살아남은 개체 수를 순서대로 한 줄에 하나씩 총 개의 줄로 출력한다. 서로 다른 데이터 집합 사이에는 빈 줄을 하나 넣는다.