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

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

기압을 재는 소

면접 대비

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

요약
N개의 기압 측정값 가운데 부분집합을 골라 보간 오차 합을 E 이하로 유지할 때, 가장 작은 부분집합 크기와 그 크기에서 가능한 최소 오차를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 그리디, 누적 합, 이분 탐색
정답자
아직 제출이 없습니다

문제

베시는 하루 동안 대기압을 NN번 측정하여 관측한 순서대로 M1,M2,…,MNM_1, M_2, \dots, M_N 이라고 번호를 매긴다 (1≤N≤1001 \le N \le 100, 1≤Mi≤1,000,0001 \le M_i \le 1{,}000{,}000).

베시는 전체 측정값을 잘 대표하는 부분집합, 즉 아래에서 정의하는 오차가 작아지도록 하는 인덱스 집합 s1<s2<⋯<sKs_1 < s_2 < \dots < s_K (1≤K≤N1 \le K \le N)를 고르려고 한다.

부분집합에 포함되지 않은 각 인덱스 ii 는 다음과 같이 오차를 만든다.

  • i<s1i < s_1 인 경우: 2⋅∣Mi−Ms1∣2 \cdot |M_i - M_{s_1}|
  • 어떤 jj 에 대해 sj<i<sj+1s_j < i < s_{j+1} 인 경우: ∣2Mi−(Msj+Msj+1)∣|2 M_i - (M_{s_j} + M_{s_{j+1}})|
  • i>sKi > s_K 인 경우: 2⋅∣Mi−MsK∣2 \cdot |M_i - M_{s_K}|

전체 오차는 이렇게 계산한 개별 오차들의 합이다. 최대 허용 오차 EE (1≤E≤1,000,0001 \le E \le 1{,}000{,}000)가 주어질 때, 전체 오차가 EE 이하가 되는 가장 작은 부분집합의 크기를 구하여라.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 NN 과 EE.
  • 둘째 줄부터 N+1N+1째 줄까지: i+1i+1째 줄에 정수 MiM_i 가 하나씩 주어진다.

출력

  • 첫째 줄: 공백으로 구분된 두 정수. 전체 오차가 EE 이하가 되는 가장 작은 부분집합의 크기와, 그 크기의 부분집합으로 얻을 수 있는 최소 전체 오차.

힌트

예를 들어 측정값이 10,3,20,4010, 3, 20, 40 일 때, 2번째와 4번째 측정값을 고르는 것이 최적이며 전체 오차는 1717 이다. 첫 번째로 선택된 인덱스보다 앞에 있는 측정값이 만드는 오차는 2⋅∣10−3∣=142 \cdot |10 - 3| = 14 이고, 선택된 두 인덱스 사이에 있는 측정값이 만드는 오차는 ∣2⋅20−(3+40)∣=3|2 \cdot 20 - (3 + 40)| = 3 이다.

예제1

  1. 예제 1

    입력
    4 20
    10
    3
    20
    40
    
    예상 출력
    2 17