Orderly Evacuation - Chiarimento

Ciao, volevo chiedere maggiori informazioni sul testo di orderly evacuation. Di per sé mi sembra abbastanza chiaro, tuttavia anche in gara non ero riuscito a fare il subtask 3 in cui si presuppone che il piano di fuga sia una linea: (Ei != Ej for each i, j = 0 . . . N − 1). Siccome mi era rimasto il dubbio di dove fosse il problema ho provato a scrivere un codice ad hoc che risolva questo terzo task. La logica è la seguente: creo un vettore di strutture che tengono a mente l’arroganza, la ‘direzione’ E, e l’indice in cui inizialmente si trovano visto che è quello che poi va stampato. Le ordino in ordine crescente per E e successivamente le stampo nel nuovo ordine.

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

#define MAXN 1000000

typedef struct Elem{
	int A;
	int E;
	int i;
}Elemtype;

// funzione di sort
typedef int CmpFunType(const void *, const void *);
int StructCrescente(const Elemtype *v1, const Elemtype *v2){
	return (v1->E > v2->E) - (v2->E > v1->E);
}

// input data
int N, i;
int E, A;

Elemtype W[MAXN];

int main() {
//  uncomment the following lines if you want to read/write from files
//  freopen("input.txt", "r", stdin);
//  freopen("output.txt", "w", stdout);

    assert(1 == scanf("%d", &N));
    for(i=0; i<N; i++){
        assert(1 == scanf("%d", &E));
        W[i].E = E;
	}
    for(i=0; i<N; i++){
        assert(1 == scanf("%d", &A));
        W[i].A = A;
        W[i].i = i;
	}

    qsort(W, N, sizeof(W[0]), (CmpFunType *)StructCrescente);
    
    // print the result
    printf("0 ");
    for(i=0; i<N-1; i++) if(W[i].i!=0)printf("%d ", W[i].i);
    printf("%d\n",W[N-1].i);
    return 0;
}

Detto ciò in locale su piccoli esempi mi funziona, il che supponendo che il codice funzioni effettivamente mi lascia pensare a una qualche misinterpretazione del testo da parte mia che però non riesco a cogliere. Dove ho sbagliato? Grazie in anticipo.

Prova con questo caso di test:
input:

4
-1 3 1 0
1 1 1 1

output:

0 3 1 2

Inoltre quel subtask si può risolvere in modo molto più semplice, con una banale vista del grafo. Essendo una linea, il successivo che incontri è il prossimo che esce.

1 Mi Piace

Ah, mi hai appena fatto realizzare che la mia soluzione non ha senso, bene xD.
Grazie mille:)