Informatică, întrebare adresată de Utilizator anonim, 8 ani în urmă

#1436 de pe pbinfo
Fie S un şir cu numere naturale nenule. Considerând distanţa dintre elementele Si şi Sj ca fiind egală cu |i−j|, scrieţi un program care determină distanţa maximă dintre 2 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 S.

Date de intrare
Fișierul de ieşire distanta.out va conţine pe prima linie distanţa maximă dintre 2 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,103]
Elementele şirului sunt numerotate de la 1

Răspunsuri la întrebare

Răspuns de arkavas
4
#include <fstream>using namespace std;ifstream f("distanta.in");ofstream g("distanta.out");int a[1001],b[1001]; // vectori de frecventaint main(){   int x,pozitie=1; //pozitie retine pozitia fiecarui element din sir    while(f>>x)    {        if(a[x]==0) // daca nu exista elementul in vector pun indicele lui            a[x]=pozitie;        b[x]=pozitie;          pozitie++; // maresc pozitie pentru a respecta pozitia din sirul initial    }    int distMaxima=0, d,i;    for(i=1;i<=1000;i++)    {        d=b[i]-a[i];        if(d>distMaxima)            distMaxima=d;    }    g<<distMaxima;    return 0;}

Dannyaa: E de 100p?
arkavas: de 200:)
Alte întrebări interesante