https://softeer.ai/practice/6257
부분순열 문제인거같아서 한참 고민했는데..
위와 같은 수학적 해법이 있다니 엄청났다!
N의 최대가 5,000이기 때문에 정답을 long으로 출력해줘야한다!
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int arr[] = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
long count = 0;
for(int i = 0; i < N; i++) {
long circle = 0;
for(int j = i + 1; j < N; j++) {
if(arr[i] < arr[j]) {
circle++;
} else if(arr[i] > arr[j]) {
count += circle;
}
}
}
System.out.println(count);
}
}