새치기

면접 대비

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

요약
1번부터 N번 학생이 차례로 줄에 합류하며 맨 앞(만족도 s_i) 또는 맨 뒤(만족도 0)를 선택하고, 뒤에 번호가 큰 학생이 있으면 새치기를 당해 만족도가 -s_i로 바뀔 때 총 만족도의 최댓값을 구한다.
난이도

보통10점 중 6점

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

문제

오늘 참슬기식당의 점심 메뉴는 치킨마요덮밥이다. 그래서 그런지 평소보다 훨씬 많은 학생들이 줄을 선다. 학생들은 11번부터 NN번까지 번호표를 가지고 있다. 학생들은 번호표에 따라 순서대로 줄을 서려고 한다. 11번 번호표를 가진 학생은 줄에 처음으로 서게 되고, 이때 만족도는 s_1s\_1이다. 22번 번호표를 가진 학생부터는 다음 두 가지 행동 중 하나를 선택해 줄을 선다.

  • 맨 앞에 서기: 줄의 맨 앞에 서게 되고, 이때 ii번 학생의 만족도는 s_is\_i이다.
  • 맨 뒤에 서기: 줄의 맨 뒤에 서게 되고, 이때 ii번 학생의 만족도는 00이다.

또한 줄을 서는 방법에 따라 기존 학생의 만족도가 변화할 수 있다.

  • 만약 ii번 학생 앞에 jj (j>i)(j > i)번 학생이 있다면 새치기를 당했기 때문에 ii번 학생의 만족도가 −s_i−s\_i로 변한다.
    • 기존 만족도가 00이었더라도 −s_i-s\_i로 변할 수 있음에 유의하라.
  • 만약 ii번 학생 앞에 jj (j>i)(j > i)번 학생이 없다면 새치기를 당하지 않았기 때문에 ii번 학생의 만족도는 변하지 않는다.

식당 도우미인 여러분은 문득 각 학생의 만족도 총합을 최대화하는 방법이 궁금해졌다. 만족도 총합의 최댓값을 구해보자.

입력

첫 번째 줄에 학생의 수 NN이 주어진다.

두 번째 줄에 양의 정수 s_1s\_1, s_2s\_2, s_3s\_3, ⋯\cdots, s_Ns\_N이 공백으로 구분되어 주어진다.

출력

첫 번째 줄에 만족도 총합의 최댓값을 출력한다.

제한

  • 1≤N≤100,0001 \le N \le 100\\,000
  • 1≤s_i≤1091 \le s\_i \le 10^9
  • 1≤i≤N1 \le i \le N

예제3

  1. 예제 1

    입력
    2
    1 10
    
    예상 출력
    9
    
  2. 예제 2

    입력
    3
    10 1 1
    
    예상 출력
    10
    
  3. 예제 3

    입력
    4
    1 2 4 1
    
    예상 출력
    1