수 지우기


답안 제출

Points: 1
시간 제한: 2.0s
메모리 제한: 256M

문제 유형
허용된 언어
C++

배열 \(A = (A_1, A_2, ..., A_n)\)이 주어진다.
그리고 다음 동작을 정확히 \(B\)번 수행할 수 있다.

  • \(A_i = c\)인 모든 값들을 0으로 바꾼다.

위의 동작을 정확히 \(B\)번 수행한 후, 가능한 배열 \(A\)의 합 중 최솟값을 구하시오.

입력

첫 번째 줄에 배열 \(A\)의 길이 \(n\)과 동작의 시행횟수 \(B\)가 입력으로 들어온다.
두 번째 줄에 \(A_1, A_2, ..., A_n\)이 입력으로 들어온다.

출력

\(B\)번의 동작 이후, 가능한 배열 \(A\)의 합 중 최솟값을 출력한다.

제한

  • 입력은 모두 정수
  • \(1 \le B \le n \le 300,000\)
  • \(1 \le A_i \le 10^9\)

예제 입력 1

10 2
1 1 1 1 1 7 2 2 3 4

예제 출력 1

11

예제 1 설명

먼저 \(A_i = 1\) 인 모든 값들을 0으로 바꾸면 배열은 다음과 같이 변한다 : \((0, 0, 0, 0, 0, 7, 2, 2, 3, 4)\)
그리고 \(A_i = 7\)인 모든 값들을 0으로 바꾸면 배열은 다음과 같이 변한다 : \((0, 0, 0, 0, 0, 0, 2, 2, 3, 4)\)
그러면 남은 배열의 합은 \(2 + 2 + 3 + 4 = 11\) 이다.

예제 입력 2

5 3
1 2 2 2 1

예제 출력 2

0

예제 2 설명

이미 0이 된 \(A_i\)에 대해서도 동작을 수행할 수 있다.

서브태스크

번호 배점 제한
1 10 \(n \le 100\)
2 20 모든 \(A_i\)는 다른 값이다.
3 20 \(A_i \le 1000\)
4 50 추가 제한 없음

코멘트

현재 작성된 코멘트가 없습니다.