Chiamata non valida alla funzione Vernicia

Codice:

    #include <stdlib.h>
    #include <stdio.h>

    typedef struct Item {
        int p;
        int val;
    } Item;

    void Vernicia(int indice, int colore);

    int compare(const void* p, const void* p1) {
        return ((Item*) p)->val > ((Item*) p1)->val;
    }

    void range(int array[], int& indexarry, int& from, const int &to) {
        for (; from+1 < to; ++from) {
            array[indexarry] = from+1;
            ++indexarry;
        }
        from=to;
    }

    void Diversifica(int N, int colore[]) {
        Item* items = new Item[N];
        for (int i = 0; i < N; ++i) {
            items[i] = {i, colore[i]};
        }
        qsort(items, N, sizeof (Item), compare);
        int indexarr = 0, previus = 1;
        range(colore, indexarr, previus, items[0].val);
        for (int i = 1; i < N; ++i) {
            range(colore, indexarr, previus, items[i].val);
        }
        if (previus != N)
            range(colore, indexarr, previus, N + 1);
        previus = items[0].val;
        for (int i = 1; i < N; ++i) {
            if (previus == items[i].val) {
                --indexarr;
                Vernicia(items[i].p, colore[indexarr]);
            } else {
                previus = items[i].val;
            }
        }
    }

ho usato questo codice per il problema Cubetti colorati e mi da come errore (solo in alcuni test) “Chiamata non valida alla funzione Vernicia” , qualcuno a qualche idea da dove venga questo errore?

Forse è da controllare che indexarr non vada in negativo.

1 Mi Piace