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

Ma ajuta si pe mine cineva cu problema 3287 de pe pbinfo? Va rog.

Răspunsuri la întrebare

Răspuns de gabi54t
1

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("cifrazecmax.in");

ofstream g("cifrazecmax.out");

long long unsigned cifre[10],ind[10];

int main()

{

   long long unsigned x,n=0,cfmax=0,i, minn=1000000001;

   while(f>>x)

   {

       x/=10;

       cifre[x%10]++;

       ind[x%10]=++n;

   }

   for(i=0; i<10; i++)

       if(cifre[i]>cfmax)

           cfmax=cifre[i];

   for(i=0; i<10; i++)

       if(cifre[i]==cfmax && ind[i]<minn)

       {

           minn=ind[i];

       }

       g<<minn;

   f.close();

   g.close();

   return 0;

}

  • da 100 de puncte, am verificat eu ca sa ma asigur.

Explicație:

citesti numarul din fisier, apoi te folosesti de un vector de frecventa ca sa retii de cate ori apare cifra acea in fisier la ordinul zecilor.

vectorul ind retine pozitia, iar apoi parcurgi cei doi vectori si gasesti pozitia cautata.

Pentru cazurile in care sunt mai multe numere care au acelasi numar de predecesori cu cifra zecilori egali, trebuie sa il gasesti pe primul, de aceea am facut cu minn.

Daca ai alte intrebari sau ceva, poti lasa un comm si o sa incerc sa explic cat pot eu de bine.


iepuretoni: La sfarsit trebuie g << min+1
iepuretoni: Iti multumesc frumos!
gabi54t: idk l-am uploadat asa si a mers :)), cu placere
Alte întrebări interesante