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

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

로봇

면접 대비

시간 제한2초메모리 제한512 MB

요약
부호가 있는 이동 거리 수열이 주어질 때, 최대 k개의 부호를 뒤집어 최종 위치의 절댓값을 최대로 만든다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 수학, 배열
정답자
아직 제출이 없습니다

문제

회사 <<필립 인더스트리즈>>는 화성에 새 로봇 탐사차를 보냈다. 로봇의 목표는 화성 표면을 탐사하는 것이다.

화성을 탐사하기 위해 로봇은 행성 표면을 따라 남쪽과 북쪽으로 직선을 따라 이동한다. 로봇의 프로그램은 nn개의 명령으로 이루어지며, 각 명령은 정수 aia_i로 표현된다. 각 수 aia_i는 로봇이 걸어야 하는 걸음 수를 나타낸다. ai>0a_i > 0이면 로봇은 ∣ai∣|a_i|걸음 북쪽으로 이동하고, ai<0a_i < 0이면 ∣ai∣|a_i|걸음 남쪽으로 이동한다. 로봇은 첫 번째부터 시작하여 명령을 차례대로 실행한다.

그런데 화성으로 가는 도중 로봇은 우주 방사선에 노출되어 프로그램이 손상되었을 수 있다. 메모리 검사 절차를 실행한 과학자들은 프로그램에 다음과 같은 형태의 오류가 0개에서 kk개까지 발생했음을 알아냈다. 즉, 수 aia_i가 −ai-a_i로 바뀐 것이다. 그럼에도 화성에 착륙한 로봇은 손상되었을 수 있는 자기 프로그램을 실행했다.

이제 로봇을 구출하기 위해 과학자들은 로봇이 프로그램 실행을 시작한 지점에서 얼마나 멀리 떨어질 수 있었는지 알아내려 한다. 그들을 도와 이 사실을 밝혀내자.

입력

첫째 줄에는 두 수 nn, kk가 주어진다 (1≤k≤n≤1051 \le k \le n \le 10^5). 이는 로봇 프로그램에 있는 수의 개수와 최대 오류 개수이다.

둘째 줄에는 nn개의 수 aia_i가 주어진다 (−104≤ai≤104-10^4 \le a_i \le 10^4, ai≠0a_i \ne 0). 이는 로봇의 프로그램이다.

출력

로봇이 모든 명령을 실행하고 kk개 이하의 오류를 일으켰을 때 이동할 수 있었던 최대 거리를 걸음 수로 하여 한 줄에 출력한다.

힌트

첫 번째 예에서 로봇은 예를 들어 프로그램 1,2,−1,31, 2, -1, 3을 실행하여 결과적으로 5걸음 북쪽으로 이동할 수 있었다.

예제2

  1. 예제 1

    입력
    4 1
    1 2 -1 -3
    
    예상 출력
    5
    
  2. 예제 2

    입력
    7 2
    5 -3 7 9 -2 -8 -1
    
    예상 출력
    29