각 j(0 이상 N-1 이하)에 대해 모든 값을 min(A_i, j)로 자른 배열의 역전 쌍 개수를 구한다.
어려움8정렬누적 합구현수학아직 제출이 없습니다시간 제한1초메모리 제한512 MBTired of his stubborn cowlick, Farmer John decides to get a haircut. He has N (1≤N≤105) strands of hair arranged in a line, and strand i is initially A_i micrometers long (0≤A_i≤N). Ideally, he wants his hair to be monotonically increasing in length, so he defines the "badness" of his hair as the number of inversions: pairs (i,j) such that i<j and A_i>A_j.
For each of j=0,1,…,N−1, FJ would like to know the badness of his hair if all strands with length greater than j are decreased to length exactly j.
(Fun fact: the average human head does indeed have about 105 hairs!)
The first line contains N.
The second line contains A_1,A_2,…,A_N.
For each of j=0,1,…,N−1, output the badness of FJ's hair on a new line.
Note that the large size of integers involved in this problem may require the use of 64-bit integer data types (e.g., a "long long" in C/C++).
The fourth line of output describes the number of inversions when FJ's hairs are decreased to length 3. Then A=\[3,2,3,3,0] has five inversions: A_1>A_2,,A_1>A_5,,A_2>A_5,,A_3>A_5, and A_4>A_5.