만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

최대 합을 찾아서

면접 대비

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

요약
배열에서 양 끝 원소가 같은 연속 부분 배열 중 합이 가장 큰 것을 찾아 그 합과 시작, 끝 위치를 출력합니다.
난이도

보통10점 중 4점

유형
해시맵, 누적 합, 배열
정답자
아직 제출이 없습니다

문제

엄마가 어린 소녀 알료나에게 숫자 배열을 선물했다. 알료나는 양 끝의 수가 같은 연속 부분 배열에 관심을 가졌다. 이런 부분 배열 중 길이가 0이 아닌 것들 가운데 합이 최대인 부분 배열을 찾으려 한다. 형식적으로 말하면, al=ara_l = a_r을 만족하면서 합 al+al+1+⋯+ara_l + a_{l+1} + \dots + a_r이 최대가 되는 1≤l≤r≤n1 \leq l \leq r \leq n을 구해야 한다.

입력

첫 번째 줄에 배열 aa의 원소 개수 nn (1≤n≤10000001 \leq n \leq 1000000)이 주어진다. 두 번째 줄에 정수 a1,a2,…,ana_1, a_2, \dots, a_n (−109≤ai≤109-10^9 \leq a_i \leq 10^9)이 주어진다.

출력

첫 번째 줄에 조건을 만족하는 부분 배열의 최대 합을 출력한다. 두 번째 줄에는 그 최대 합을 갖는 부분 배열 al,al+1,…,ara_l, a_{l+1}, \dots, a_r을 나타내는 두 정수 ll과 rr을 1≤l≤r≤n1 \leq l \leq r \leq n을 만족하도록 출력한다. 답이 여러 개이면 그중 아무거나 출력해도 된다.

힌트

두 번째 예제에서는 모든 수가 음수이지만, 알료나는 그래도 비어 있지 않은 부분 배열을 하나 골라야 한다.

예제3

  1. 예제 1

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

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

    입력
    3
    1 2 3
    
    예상 출력
    3
    3 3