Se consideră un șir de numere naturale, notate . Definim pentru orice pereche de indici , distanța între elementele și ca fiind egală cu .
Acest șir va fi codificat după următoarele reguli:
- fiecare element din șir este înlocuit cu indicele celui mai apropiat element din șir (cel față de care distanța este minimă) strict mai mare decât el;
- dacă pentru un element din șir există două elemente care respectă regula de mai sus, atunci el va fi înlocuit cu indicele mai mare, adică al elementului strict mai mare decât el, aflat în dreapta lui;
- elementele de valoare maximă din șir vor fi înlocuite cu .
Cerinţă
Scrieți un program care codifică un șir de valori, după regulile descrise.
Date de intrare
Fișierul de intrare codat.in
conține:
- pe prima linie numărul natural
- pe următoarea linie numere naturale nenule, separate prin câte un spaţiu, reprezentând șirul
Date de ieşire
Fișierul de ieşire codat.out
va conține pe prima linie numere întregi nenule, separate prin câte un spaţiu, reprezentând șirul codificat.
Restricţii şi precizări
Exemplu
codat.in
7
2 9 3 5 1 1 4
codat.out
2 -1 4 2 4 7 4
Explicație
: cel mai apropiat element strict mai mare decât el este
: nu are nici un element mai mare decât el
: elementele mai mari strict decât el, sunt aflate la distanță egală, deci va fi înlocuit cu indicele mai mare adică
: cel mai apropiat element strict mai mare decât el este
: cel mai apropiat element strict mai mare decât el este
: cel mai apropiat element strict mai mare decât el este
: cel mai apropiat element strict mai mare decât el este