Сравнение с подсчётом

Дан массив из ? чисел: ?1, ?2, . . ., ?? . Требуется для каждого элемента массива ?? посчитать количество элементов ??, стоящих правее (? < ?), но меньших него (?? > ?? ). В первой строке записано целое число ? (1 <= ? <= 100). Во второй строке через пробел записано ? целых положительных чисел — значения элементов массива. Гарантируется, что значения элементов не превосходят 100. Выведите ? целых чисел через пробел: по порядку для каждого элемента входного массива выведите количество элементов, удовлетворяющих описанному выше условию. Мой код вроде бы работает, но выводит какие-то странные значения. К примеру, при N=3 и вводе 3 2 1 на выходе должно быть 2 1 0, а у меня вообще 1 2 3. Посоветуйте, что можно сделать/исправить, пожалуйста :)

#include<stdio.h>
int main(){
    int N, i, j, n;
    n=0;
    scanf("%d", &N);
    int b[10000];
    for(i=0; i<N; i++){
        scanf("%d", &b[i]);
    }
    for(i=0; i<N; i++){
        for(j=0; j<N; j++){
            if((i<j)&&(b[i]>b[j])){
                n++;
                printf("%d", n);
            }
        }
    }
    return 0;
}

Ответы (1 шт):

Автор решения: Mikhailo

Вы неверно проверяете, неверно считаете и неверно выводите. Долго расписывать каждую ошибку, возьмите готовое решение.

#include<stdio.h>

int main() {
    int N;
    scanf("%d", &N);
    int b[100];

    for (int i = 0; i < N; i++) {
        scanf("%d", &b[i]);
        }

    for (int i = 0; i < N; i++) {
        int n = 0;

        for (int j = i + 1; j < N; j++)
            if (b[i] > b[j]) n++;

        printf("%d ", n);
        }
    }
→ Ссылка