Răspuns:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bac.in");
int num, vf[10], z, n, poz[10];
int main()
{
while (f >> num) {
++n;
z=(num/10)%10;
++vf[z]; poz[z]=n;
}
int m=0;
for (int i=0; i<10; i++) {
if (vf[i]>m) m=vf[i];
}
for (int i=0; i<10; i++) {
if (vf[i]==m) {
cout << poz[i] << " ";
}
}
return 0;
}
Explicație:
folosim un vector de frecvență a cifrei zecilor a numerelor citite din fișier.
Astfel vom memora câte numere precedente numărului curent citit au aceeași cifră a zecilor. Totodată memorăm în vectorul poz poziția în șir a ultimului număr citit care are cifra zecilor z.
Aflăm valoarea maximă m din vectorul de frecvență vf
Parcurgem vf, și afișem din poz poziția numărului din șir cu valoarea în vf egală cu m.
Sper că codul e clar...