도대체 파이썬 코드랑 c++ 코드 어느 부분이 달라서 c++만 틀리는 걸까요..
import sys
input = sys.stdin.readline
n = int(input())
bus = list(map(int, input().split()))
arr = [[0 for i in range(n + 1)] for j in range(n + 1)]
for j in range(n - 1, -1, -1):
for x in range(1, n + 1):
if bus[j] < x:
arr[x][j] = arr[x][j + 1] + 1
else:
arr[x][j] = arr[x][j + 1]
ans = 0
for i in range(n):
for j in range(i, n):
if bus[i] < bus[j]:
ans += arr[bus[i]][j]
print(ans)
#include <iostream>
#include <vector>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N;
cin >> N;
int* bus = new int[N];
for(int i=0; i<N; i++){
cin >> bus[i];
}
// arr[x][j] := j번째보다 오른쪽에 있는 숫자들 중, x보다 값이 작은 것들의 개수
vector<vector<int>> arr(N+1, vector<int>(N+1, 0));
for(int j=N-1; j>=0; j--){ // N-1부터 거꾸로 해야함; N인 경우는 0
for(int x=1; x<=N; x++){
if(bus[j] < x){ // j번째 버스가 x보다 작으면
arr[x][j] = arr[x][j+1] + 1; // j번째보다 오른쪽에 있는 숫자들 중 x보다 값이 작은 것들의 개수가 증가한다.
} else { // j번째 버스가 x보다 크거나 같으면
arr[x][j] = arr[x][j+1]; // j번째보다 오른쪽에 있는 숫자들 중 x보다 값이 작은 것들의 개수가 증가하지 않는다.
}
}
}
int answer = 0;
for(int i=0; i<N; i++){
for(int j=i; j<N; j++){ // j는 i보다 커야함
if(bus[i] < bus[j]){ // a_i < a_j를 만족할 경우에만
answer += arr[bus[i]][j]; // j번째보다 오른쪽에 있는 숫자들 중에 bus[i]보다 값이 작은 것들의 개수
}
}
}
cout << answer;
return 0;
}