시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 1024 MB | 114 | 35 | 33 | 44.595% |
구슬 정렬 (Bead Sort 또는 Gravity Sort)는 구슬을 지면에 수직인 막대에 끼운 뒤 떨어뜨리는 방식으로 양의 정수로 구성된 배열을 정렬하는 방법입니다. 이 방식을 컴퓨터에서 구현하기에는 공간 복잡도와 같은 면에서 많은 어려움이 있으나, 현실과 같은 물리적 모델에서 대략적으로 $O(\sqrt{n})$의 시간 복잡도를 보여준다고 알려져 있습니다. 구슬 정렬은 정확히 다음과 같은 방식으로 진행됩니다.
이러한 과정에 따라 구슬 정렬은 총 $\displaystyle{\sum _i{a_i}}$개의 구슬을 사용합니다. 양의 정수로 구성된 길이가 $n$인 배열 $a$가 주어집니다. $a$에 대해 구슬 정렬을 수행할 때, $\displaystyle{\sum _i{a_i}}$개의 구슬 모두에 대해 이동한 거리의 합에 해당하는 칸의 개수를 출력하세요. 단, 정답이 클 수 있으니 $1 \, 000 \, 000 \, 007$로 나눈 나머지를 출력하세요.
첫 번째 줄에 배열의 길이 $n$ ($1 \le n \le 2 \times 10^5$)이 주어집니다.
두 번째 줄에 배열의 각 원소 $a_1$부터 $a_n$까지 총 $n$개의 양의 정수가 공백으로 분리되어 주어집니다. ($0 < a_i \le 10^9$)
문제의 정답을 한 줄에 출력하세요. 정답이 클 수 있으니 $1 \, 000 \, 000 \, 007$로 나눈 나머지를 출력하세요.
5 5 4 3 2 1
20
이동 거리가 $1$인 구슬이 $4$개, $2$인 구슬이 $3$개, $3$인 구슬이 $2$개, $4$인 구슬이 $1$개로 정답은 $4+6+6+4=20$입니다.