Heu d’implementar una funció que rep un natural i un vector amb dos o més elements i que cumpleix la següent condició: la successió de distàncies entre cada dos elements consecutius de és estrictament creixent, és a dir . Per exemple, la següent seqüència cumpleix aquesta condició:
3 2 4 8 0 -10 -22 -8 7
Fixeu-vos que la distància entre el primer i el segon element és 1, la distancia entre el segon i el tercer és 2, entre el tercer i el quart és 4, entre el quart i el cinquè és 8, entre el cinquè i el sisè és 10, entre el sisè i el setè és 12, entre el setè i el vuitè és 14, i entre el vuitè i el novè és 15. Queda clar, doncs, que la seqüència de distàncies consecutives és creixent.
En cas que hi hagi una parella d’elements consecutius a distància , la funció ha de retornar la posició (indexant des de 0) del primer element d’aquesta parella. En cas contrari, la funció ha de retornar -1. En l’exemple anterior, amb la funció ha de retornar , i amb la funció ha de retornar . Aquesta és la capcelera:
// Pre: Let n be v.size(). n>=2 and d>=0 and |v[0]-v[1]| < |v[1]-v[2]| < ... < |v[n-2]-v[n-1]|
// Post: If there exists i in {0..n-2} holding |v[i]-v[i+1]| = d, then the function returns this i.
// Otherwise, it returns -1.
int findDistance(int d, const vector<int> &v);
Els jocs de proves privats miren de comprovar que la vostra solució és de cost logarítmic.
Només cal enviar el procediment demanat; el programa principal serà ignorat.
Podeu utilitzar la funció abs de
cmath si voleu. Avaluació sobre 10 punts:
Solució lenta: 5 punts.
solució ràpida: 10 punts.
Entenem com a solució ràpida una que és correcta, de cost logarítmic i capaç de superar els jocs de proves públics i privats. Entenem com a solució lenta una que no és ràpida, però és correcta i capaç de superar els jocs de proves públics.
Autoria: PRO1
Generació: 2026-01-25T16:04:30.399Z
© Jutge.org, 2006–2026.
https://jutge.org