포럼
문제 USACO0007

타일 교환

설명

농부 존(Farmer John)은 최근 동네 정사각형 마트(물론 정사각형 물건만 파는 가게이다)에서 구입한 정사각형 타일들로 헛간 바닥을 리모델링하려고 한다. 안타깝게도 구입 전에 헛간의 크기를 제대로 재지 않아서, 이제 타일 몇 개를 다른 크기의 새 정사각형 타일로 교환해야 한다.

FJ가 이전에 구입한 N개의 정사각형 타일의 한 변의 길이는 A_1...A_N이다. 존은 이 중 일부를 새 정사각형 타일로 교환하여, 타일들의 넓이의 총합이 정확히 M이 되게 하고 싶다. 정사각형 마트는 현재 특별 행사를 진행 중이다. 한 변의 길이가 A_i인 타일을 |A_i-B_i|*|A_i-B_i| 단위의 비용으로 한 변의 길이가 B_i인 새 타일과 교환할 수 있다. 하지만 이 행사는 이전에 구입한 타일에만 적용된다. 즉, FJ는 다른 타일을 교환해서 얻은 타일을 다시 교환할 수 없다 (예를 들어, 크기 3인 타일을 크기 2인 타일로 교환한 뒤 그것을 다시 크기 1인 타일로 교환할 수는 없다).

타일들의 넓이의 합이 M이 되도록 교환하는 데 필요한 최소 비용을 구하시오. 넓이 M을 만드는 것이 불가능하면 -1을 출력한다.

제약
입력 형식

첫째 줄: 공백으로 구분된 두 정수 N (1<=N<=10)과 M (1<=M<=10,000).

둘째 줄부터 1+N번째 줄까지: 각 줄에 입력 정사각형의 한 변의 길이를 나타내는 정수 A_1부터 A_N 중 하나가 주어진다 (1<=A_i<=100).

출력 형식

총 넓이 M을 얻기 위해 타일을 교환하는 최소 비용, 불가능하면 -1.

Standard input / output
This problem is judged over standard input/output. The original contest used named files — if you prefer the classic interface, tick “File I/O” on the submit form and read/write these files instead:
입력을 읽을 파일 tilechng.in · 출력을 쓸 파일 tilechng.out
예제 1
입력
3 6
3
3
1
출력
5
설명

Input details: There are 3 tiles. Two are squares of side length 3, and one is a square with side length 1. We would like to exchange these to make a total area of 6.

Output details: Exchange one of the side-3 squares for a side-2 square, and another side-3 square for a side-1 square. This gives the desired area of 4+1+1=6 and costs 4+1=5 units.

문제 정보

riseoj 작성

출처 올림피아드 > USACO > 2011-2012 > November > Silver

태그

평가 및 의견

Tile Exchanging

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Tile Exchanging

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
파일 입출력 (tilechng.in / tilechng.out — classic USACO interface; off = stdin/stdout)
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8