Corso per Sommelier 0/100

Salve a tutti ragazzi, non riesco a capire perchè questo algoritmo mi dii 0/100:

#include <iostream>
#include <cstdio>

int main()
{
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);

	int N, max = 1;

	std::cin >> N;

	int vini[N];

	for(int i = 0; i < N; i++)
	    std::cin >> vini[i];

    for(int i = N - 1; i <= 0; i--)
    {
        int t = 1;
        
        for(int j = i; j < N - 3; j++)
        {
            if(vini[j] <= vini[j + 2])
                t++;
        }

        if(t > max)
            max = t;
    }

    std::cout << max << std::endl;
}

Nel primo caso di esempio il tuo codice ritorna tre mentre il risultato esatto è quattro, stessa cosa nel secondo quando invece dovrebbe ritornare cinque.

Sei sicuro di aver compreso il testo?

Nel primo caso di esempio abbiamo nove possibili vini:
11 13 10 16 12 12 13 11 13

Dobbiamo trovare la sottosequenza, con gradazioni maggiori o uguali tenendo in conto il fatto che non puoi bere due vini consecutivi.
La sequenza più lunga in questo caso è 11 (prima posizione) - 12 (quinta) - 13 (terzultima) - 13 (ultima).

Se togli quest’ultimo punto, cioè l’impossibilità di bere due vini consecutivi, non ti ricorda un problema già conosciuto?

Aiuto:

Longest Increasing Subsequence, con una piccola modifica

Spero di essere stato chiaro :slight_smile: