Rezolvare completă PbInfo #1436 distanta_maxima

Cerința

Fie \(\scriptsize\text{S} \) un şir cu numere naturale nenule. Considerând distanţa dintre elementele \(\scriptsize \text{S}_i \) şi \(\scriptsize \text{S}_j \) ca fiind egală cu \(\scriptsize|i-j|\), scrieţi un program care determină distanţa maximă dintre două valori egale din şir.

Date de intrare

Fișierul de intrare distanta.in conține pe prima linie maxim 100.000 de numere naturale, reprezentând elementele şirului \(\scriptsize \text{S} \).

Date de intrare

Fișierul de ieşire distanta.out va conţine pe prima linie distanţa maximă dintre două valori egale din şir. Dacă şirul are toate elementele distincte, distanţa va fi egală cu 0.

Restricții și precizări

  • Fiecare element al şirului este un număr natural din intervalul [1,1000]
  • Elementele şirului sunt numerotate de la 1

Exemplu

distanta.in

30 33 16 33 37 16 72 65 16 46

distanta.out

6

Explicaţie

\(\scriptsize S=\{30, 33, \underline{16}, 33, 37, 16, 72, 65, \underline{16}, 46\} \). Distanţa maximă este cea dintre elementele subliniate (\(\scriptsize9-3=6\)).

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema distanta_maxima:

#include <fstream>

using namespace std;

int aparitii[1005];

ifstream fin("distanta.in");
ofstream fout("distanta.out");

int main()
{

    int n, dmax = 0;

    for(int i = 1; fin >> n; i++) {
        if( !aparitii[n] ) {
            aparitii[n] = i;
        }
        else {
            if(i - aparitii[n] > dmax) {
                dmax = i - aparitii[n];
            }
        }
    }

    fout << dmax;

    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1436 distanta_maxima

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1436 distanta_maxima de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!