조작

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

요약
인접한 두 학생의 점수에 같은 정수를 더하는 조작으로 최댓값과 최솟값의 차이를 최소로 만들고, 그 조작 순서를 출력한다.
난이도

어려움10점 중 8점

유형
수학, 그리디, 누적 합, 정수론
정답자
아직 제출이 없습니다

문제

지민이의 반에는 NN명의 학생이 있습니다. 지민이의 반은 최근에 중간고사를 봤는데, 지민이는 우연히 각 학생들의 중간고사 점수를 입수하게 되었습니다. ii번째 학생의 중간고사 성적은 A_iA\_i입니다.

지민이는 평등을 매우 중요시하기 때문에, 이 점수들을 조작하여 점수의 최댓값과 최솟값의 차이를 최소화하고자 합니다. 이때, 한 번의 조작은 다음과 같은 과정으로 이루어집니다.

  • 임의의 정수 kk와 1≤i≤N−11\le i\le N-1인 정수 ii를 선택하여, A_iA\_i와 A_i+1A\_{i+1}에 kk를 더한다.

성적은 음수가 될 수도 있습니다. 지민이를 도와 학생들의 성적을 10610^6회 이하로 조작하여 max⁡A−min⁡A\max A-\min A를 최소화하는 프로그램을 작성하세요.

입력

첫째 줄에 학생의 수 NN이 주어집니다.

둘째 줄에 학생들의 성적 A_1A\_1, A_2A\_2, ⋯\cdots, A_NA\_N이 띄어쓰기를 사이에 두고 주어집니다.

출력

첫째 줄에 조작을 통해 지민이가 달성할 수 있는 max⁡A−min⁡A\max A-\min A의 최솟값을 출력합니다.

둘째 줄에 최솟값을 달성하기 위해 필요한 조작의 횟수 MM을 출력합니다. 조작의 횟수를 최소화할 필요는 없습니다.

셋째 줄부터 M+2M+2번째 줄까지 두 정수 ii, kk를 띄어쓰기를 사이에 두고 출력합니다. 이때 x+2x+2번째 줄에 출력하는 ii, kk는 xx번째 조작이 A_iA\_i와 A_i+1A\_{i+1}에 kk를 더하는 시행이었음을 나타냅니다. (1≤x≤M)(1 \le x \le M)

제한

입력은 다음 조건을 만족합니다.

  • 2≤N≤1052 \le N \le 10^5
  • 0≤A_i≤1090 \le A\_i \le 10^9 (1≤i≤N)(1 \le i \le N)

출력은 다음 조건을 만족해야 합니다.

  • 0≤M≤1060 \le M \le 10^6. 10610^6회 이하의 조작으로 max⁡A−min⁡A\max A-\min A의 값을 최소화할 수 있음을 증명할 수 있습니다.
  • 모든 출력에서 1≤i≤N−11 \le i \le N-1.
  • MM번의 조작을 하는 도중, 그리고 모든 조작이 완료된 후 1≤j≤N1 \le j \le N인 모든 정수 jj에 대해 −1018≤A_j≤1018-10^{18} \le A\_j \le 10^{18}을 만족해야 합니다.
  • MM번의 조작이 모두 끝난 후에는 max⁡A−min⁡A\max A-\min A의 값이 첫째 줄에 출력한 값과 동일해야 합니다.

힌트

max⁡A\max A는 AA의 원소들 중의 최댓값을, min⁡A\min A는 AA의 원소들 중의 최솟값을 뜻합니다.

예제1

  1. 예제 1

    입력
    6
    0 8 3 7 8 10
    
    예상 출력
    5
    4
    4 -3
    1 5
    3 6
    2 -3