Максимальный квадрат на С

Код проходит 16 из 18 тестов. Проверял на компиляторе, вроде ошибки не заметил. В чем косяк может быть?

В массиве из N элементов (N < 20) типа unsigned long long найти максимальный из полных квадратов и напечатать его индекс (начиная с нуля). Если нет ни одного полного квадрата, напечатать -1.
Если максимальных более одного, напечатать индекс первого из них. Входные данные: стандартный поток ввода, где на первой строке записано N

на второй строке элементы массива через пробел

#include <stdio.h>
#include <math.h>

int koren(unsigned long long x) {
unsigned long long root = (unsigned long long) sqrt((long double)x);
if (root * root == x)
    return (1);
else
    return (0);
}

int main(){
    int n = 0;
    scanf("%d", &n);
    unsigned long long nums[20];
    int i = 0;
    int nul = 0;
    int ind = -1;
    unsigned long long c = 0;
    unsigned long long mx = 0;
    for (i = 0; i < n; i++) {
        scanf("%llu", &c);
        nums[i] = c;
    }
    for (i = n-1; i > -1; i--)
    {
        if (koren(nums[i])==1 && nums[i]>=mx){
             mx = nums[i];
             ind = i;
        }
    }
    printf("%d\n", ind);
    return (0);
}

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