Поведение программы не зависит от значения N
.
В случае, когда два последовательных элемента массива равны друг другу, из-за этого условия будет бесконечное l oop
if (n[i]<n[i+1]) {i++;continue;}
else {
и этот оператор внутри составного оператора else
if (i != 0) i--;
То есть оператор else будет всегда выполняться, когда n[i]
равно n[i+1]
.
Например попробуйте запустить программу для массива
#define N 3
//...
int n[N] = { 1, 2, 2 };
Вы можете избежать ошибки, изменив условие на
if (n[i]<=n[i+1]) {i++;continue;}
else {