Ma ajuta si pe mine cineva cu problema 3287 de pe pbinfo? Va rog.
Răspunsuri la întrebare
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.