Когда я использую qsort для отправки своего кода в наборе проблем cses, он его не принимает. Есть ли какой-нибудь другой способ решить эту проблему?

#c #qsort

Вопрос:

 #include <stdio.h>
#define ll long long

#include <stdlib.h>

ll int comp(const void* a, const void *b)
{
    return *(long long *)b - *(long long *)a;
}

int main(int argc, const char * argv[]) 
{
    ll int n;
    scanf("%lld", amp;n);

    ll int a[n];

    for(int i=0; i<n; i  )
    {
        scanf("%lld",(a i));
    }
     
    qsort(a, n, sizeof(ll int), comp);

    ll int cnt=0;

    for(int i=0; i<n; i  )
    {
        if(a[i] != a[i 1])
        {
            cnt  ;
        }
    }

    printf("%lldn", cnt);
    cnt=0;

    return 0;
}
 

Комментарии:

1. Я отредактировал ваш вопрос, чтобы, по крайней мере, поместить код в блоки кода, но он все еще в значительной степени нечитаем. Пожалуйста, отредактируйте свой код, чтобы сделать правильный отступ и отформатировать его. (Кроме того, вы отметили [c], и ваш код выглядит как C, но вы упомянули C 11 в названии? Пожалуйста, уточните)

2. @WeatherVane понял , я думаю, мне следует использовать *(ll int *)b-*(ll int *)a

3. Избавляться от #define ll long long

4. Нет, функция компаратора должна быть int comp(const void* a, const void *b) и возвращать int значение, как задокументировано. Это int значение не связано с типом сортируемых данных.

5. return (*(long long*)a > *(long long*)b) - (*(long long*)a < *(long long*)b);