Problema Tantrum with Consequences

Con il secondo EXAMPLE mi da errore di output, anche se provandolo da il risultato corretto(uguale a quello del pdf).

// CODICE ESERCIZIO 

#include <stdio.h>
#include <assert.h>

#define MAXN 100000

int N, P, i;
int H[MAXN];

int main() {

    assert(2 == scanf("%d %d", &N, &P));
    for(i=0; i<N; i++)
        assert(1 == scanf("%d", &H[i]));

	int cont= 0, tmp;
    for(int i = 0; i < P; i++) {
    	for(int j = 0; j < N; j++) {
    		if((H[j] > tmp && H[j] > H[j+1])){
    			tmp = H[j];
    			H[j] = 0;
    			cont++;
			} else {
				tmp = H[j];
			}
		}
	}
    
    printf("%d\n", cont);
    return 0;
}

Un comportamento diverso tra il tuo computer e la piattaforma è quasi sempre dovuto a variabili locali non inizializzate, nel tuo caso tmp andrebbe messa uguale a 0 come cont :upside_down_face:

Mettendolo a 0, mi da corretto l’example 2, ma mi da molti errori di “Execution timed out”

Questo perché la complessità del tuo algoritmo è troppo alta, O(N\cdot P), dovresti provare a non ricercarti gli edifici da distruggere per ogni aereo scorrendoti tutto l’array.
Hint: Una volta che un aereo ha demolito degli edifici l’aereo successivo potrà demolire solo gli edifici adiacenti a quelli appena demoliti