Am verificat limita si pare ok. Iti recomand ca atunci cand sortezi vectori de structuri sa nu sortezi direct vectorul ci sa iti iei un vector de indici cu care sa sortezi, pentru ca nu e eficient sa tot copiezi elemente dintr-o structura cu multi membri.
Exemplu:
for (int i=0; i<N; ++i)
ind[i] = i;
sort(ind, ind+N, cmp);
iar in cmp si peste tot pe unde mai ai nevoie te folosesti de vectorul de indici sortati:
int cmp(...) {
return structura[ a ].membru < structura[ b ].membru
}
...
printf("%d\n", structura[ ind[i] ].membru);