Scrieți funcția care are antetul:

int NrMinMaxAp(vector &a)

Funcția va returna numărul care apare de cele mai multe ori în a. Dacă există mai multe numere care apar de număr maxim de ori, se va returna minimul dintre ele.

#3798 pbinfo


Răspuns :

int NrMinMaxAp(std::vector < int > & a) {

   std::vector < int > ::iterator i;

   std::map < int, int > va;

   std::map < int, int > ::iterator vai;

   int min, k;

   for (i = a.begin(); i <= a.end(); i++)

       va[ * i]++;

   min = va.begin() -> first;

   k = va.begin() -> second;

   vai = ++va.begin();

   for (; vai != va.end(); vai++)

       if (vai -> second > k) {

           k = vai -> second;

           min = vai -> first;

       }

   else

       if (vai -> second == k)

           if (vai -> first < min)

               min = vai -> first;

   return min;

}