아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

구슬 나누기

시간 제한1초메모리 제한128 MB

요약
가치 1부터 6까지의 구슬 개수가 주어질 때, 전체를 같은 총가치의 두 묶음으로 나눌 수 있는지 판정한다.
난이도

보통10점 중 6점

유형
동적 계획법, 그리디, 비트 연산
정답자
아직 제출이 없습니다

문제

마샤(Marsha)와 빌(Bill)은 구슬을 함께 모아 두었고, 이 구슬을 서로 공평하게 나누어 각자 같은 몫을 가지려고 한다.

모든 구슬의 가치가 같다면 개수를 절반으로 나누면 되므로 쉬울 것이다. 하지만 어떤 구슬은 다른 것보다 더 크거나 아름답기 때문에, 두 사람은 각 구슬에 11 이상 66 이하의 자연수로 가치를 매겼다. 이제 두 사람은 각자 가진 구슬의 가치 합이 같아지도록 구슬을 나누려 한다.

전체 구슬의 가치 합이 짝수이더라도 이렇게 공평하게 나누는 것이 불가능할 수 있다. 예를 들어 가치가 11인 구슬 하나, 가치가 33인 구슬 하나, 가치가 44인 구슬 두 개가 있다면, 두 묶음의 가치가 같도록 나눌 수 없다.

주어진 구슬들을 공평하게 나눌 수 있는지 판별하는 프로그램을 작성하라.

입력

입력의 각 줄은 나누어야 할 구슬 묶음 하나를 나타낸다. 한 줄에는 여섯 개의 음이 아닌 정수 n1,n2,…,n6n_1, n_2, \ldots, n_6이 주어지며, nin_i는 가치가 ii인 구슬의 개수이다. 예를 들어 위에서 설명한 묶음은 1 0 1 2 0 0으로 표현된다. 한 묶음에 들어 있는 구슬의 총 개수는 최대 2000020000개이다.

입력의 마지막 줄은 0 0 0 0 0 0이며, 이 줄은 처리하지 않는다.

출력

각 묶음마다 Collection #k:를 출력한다. 여기서 kk는 묶음의 번호이며 11부터 시작한다. 그다음 줄에, 나눌 수 있으면 Can be divided.를, 나눌 수 없으면 Can't be divided.를 출력한다.

연속한 두 묶음 사이에는 빈 줄을 하나 출력한다.

예제3

  1. 예제 1

    입력
    1 0 1 2 0 0
    1 0 0 0 1 1
    0 0 0 0 0 0
    
    예상 출력
    Collection #1:
    Can't be divided.
    
    Collection #2:
    Can be divided.
    
  2. 예제 2

    입력
    2 0 0 0 0 0
    0 0 0 0 0 0
    
    예상 출력
    Collection #1:
    Can be divided.
    
  3. 예제 3

    입력
    1 0 0 0 0 0
    0 0 0 0 0 0
    
    예상 출력
    Collection #1:
    Can't be divided.