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

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

혼란의 이름으로

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

요약
n개의 수가 주어질 때, 두 정점 i와 j를 잇는 간선 비용을 a_i × a_j로 정의하고 모든 스패닝 트리 중 최소 비용과 최대 비용을 구해 1e9+7로 나눈 나머지를 출력한다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 수학, 최소 신장 트리
정답자
아직 제출이 없습니다

문제

여론이라는 것은 존재하지 않는다.


조던 엘렌버그, 미국의 수학자

K시에는 서로 연결망을 구축하려는 주민 n명이 살고 있다. 그런데 어떤 주민은 전선을 검은색으로 칠하기를 원하고, 또 어떤 주민은 흰색으로 칠하기를 원한다. 주민 i의 의견은 수 ai로 나타낼 수 있다. 주민 i와 j 사이에 전선을 놓으면 그 전선의 비용은 ai × aj이다.

K시의 시장은 다음 조건을 만족하도록 연결망을 구축하려고 한다.

  1. 전선을 정확히 n − 1개 사용한다.
  2. 서로 다른 두 주민 i와 j에 대해, p1 = i, pk = j이고 1 ≤ ℓ < k인 모든 ℓ에 대해 주민 pℓ과 pℓ+1이 전선을 공유하는 수열 p1, · · · , pk가 존재한다.

다시 말해, 연결망은 트리여야 한다.

K시의 저명한 수학자인 당신은 연결망을 구축하는 최소 비용만 알고 싶은 것이 아니다. 혼란의 이름으로, 최대 비용도 알고 싶다!

입력

첫째 줄에는 주민의 수를 나타내는 n이 주어진다. 둘째 줄에는 n개의 수 a1, a2, . . . , an이 주어진다. 주민 i의 의견은 ai로 나타낼 수 있다.

출력

한 줄에 공백으로 구분하여 두 수를 출력한다. 첫 번째 수는 연결망을 구축하는 최소 비용이고, 두 번째 수는 최대 비용이다. 비용의 절댓값이 매우 클 수 있으므로 답을 109 + 7로 나눈 나머지를 출력해야 한다. 수의 나머지(도널드 커누스가 정의한)는 a mod b = a − b⌊a/b⌋임에 유의하라. 출력하는 수는 음수가 아니어야 한다.

제한

  • 1 ≤ n ≤ 106
  • |ai| ≤ 106

예제4

  1. 예제 1

    입력
    10
    -5 -10 -7 -7 -3 -1 -7 -5 -8 -6
    
    예상 출력
    58 490
    
  2. 예제 2

    입력
    10
    -5 1 2 -2 -1 1 -5 5 -10 6
    
    예상 출력
    999999779 183
    
  3. 예제 3

    입력
    10
    0 0 0 0 0 0 0 0 0 0
    
    예상 출력
    0 0
    
  4. 예제 4

    입력
    10
    10 8 9 3 8 8 0 5 3 10
    
    예상 출력
    0 540