Informatică, întrebare adresată de laurstefan2002, 8 ani în urmă

#567 de pe pbinfo va rog:
Cerința
n elevi numerotați de la 1 la n stau în cerc, astfel încât elevul 1 și elevul n sunt vecini. Pentru fiecare elev se cunoaște înălțimea. O pereche de elevi învecinați este pereche potrivită dacă diferența dintre înălțimile elevilor este minimă. Determinați o pereche potrivită.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n înălțimi ale elevilor, în ordine.

Date de ieșire
Programul va afișa pe ecran numerele de ordine i j, separate prin exact un spatiu, a elevilor care formează o pereche potrivită.

Restricții și precizări
2 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 1.000
dacă există mai multe perechi potrivite, se poate afișa oricare

Exemplu
Intrare

5
4 6 3 5 3
Ieșire

1 5

Răspunsuri la întrebare

Răspuns de CinevaFaraNume
2
#include <iostream>

using namespace std;

short vec[1001];

short abs(short x){return x < 0? -x : x;}

int main()

{

short n;

cin >> n;

for(short i = 1; i<=n;i++)

cin >> vec[i];

vec[0]= vec[n];

short difmin = -1, difi, difj;

for(short i = 1; i <= n; i++)

{

short dif=abs(vec[i]-vec[i-1]);

if(difmin == -1 || dif < difmin)

{

difmin = dif;

difi = i;

difj = (i==1?n:i-1);

}

}

cout << (difi<difj ? difi: difj) << " " << (difi>difj ? difi: difj);

}
Alte întrebări interesante