머리카락 자르기
시간 제한1초메모리 제한512 MB
각 문턱값 j에 대해 j보다 큰 값을 모두 j로 낮춘 뒤 생기는 역전 수를 세어 0부터 N-1까지 출력한다.
문제
고집 센 삐침머리에 지친 Farmer John이 머리를 자르기로 했다. 그는 () 가닥의 머리카락을 일렬로 가지고 있고, 번째 가닥의 처음 길이는 마이크로미터이다 (). 이상적으로는 머리카락 길이가 단조 증가하기를 바라므로, 그는 머리카락의 "나쁨"을 역전 수, 즉 이고 인 쌍 의 개수로 정의한다.
각 에 대해, FJ는 길이가 보다 큰 모든 가닥을 정확히 로 줄였을 때의 머리카락 나쁨을 알고 싶어 한다.
(재미있는 사실: 평균적인 사람의 머리에는 정말로 약 개의 머리카락이 있다!)
입력
첫째 줄에 이 주어진다.
둘째 줄에 이 주어진다.
출력
각 에 대해 FJ의 머리카락 나쁨을 한 줄에 하나씩 출력한다.
이 문제에서 다루는 정수의 크기가 크므로 64비트 정수형(예: C/C++의 "long long")이 필요할 수 있다.
힌트
출력의 넷째 줄은 FJ의 머리카락을 길이 3으로 줄였을 때의 역전 수를 나타낸다. 이때 에는 다섯 개의 역전이 있다: 그리고 .