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

Fișierul bac.in conține un șir de numere naturale distincte, din intervalul [1,10^9]. Numerele din șir sunt separate prin câte un spațiu și cel puțin trei dintre ele au penultima cifră 2 și ultima cifră 0.
Se cere să se afișeze pe ecran cele mai mici trei numere din șir cu proprietatea că au penultima cifră 2 și ultima cifră 0. Numerele determinate sunt afișate în ordine crescătoare, separate prin câte un spațiu. Proiectați un algoritm eficient din punctul de vedere al memoriei utilizate și al timpului de executare.
Exemplu: dacă fișierul conține numerele 9731 50 112 20 8 16 8520 3 2520 1520 pe ecran se vor afișa, în această ordine, numerele: 20 1520 2520

Răspunsuri la întrebare

Răspuns de Levi20
1

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("bac.in");

int main()

{

   int x,a,b,c,ok=0,ok1=0,ok2=0;

   while(f>>x)

   {

       if(x%100==20)

       {

       if(ok2==0)

       {if(ok==0)

           {a=x;

           ok=1;

           }

       else

       if(ok1==0)

       {

           if(a>x)

           {

           b=a;

           a=x;

           }

           else

               b=x;

               ok1=1;

       }

       else

       {

           if(b>x)

           {

               c=b;

               b=x;

           }

         else

               c=x;

               ok2=1;

       }

       }

       else

       {

           if(a=>x)

           {

           c=b;

           b=a;

         a=x;

           }

           else

           {

               if(b=>x)

               {

               c=b;

               b=x;

               }

               else

                   if(c>x)

                   c=x;

           }

       }

     }

   }

 cout<<a<<" "<<b<<" "<<c;

   return 0;

}

Explicație:

Alte întrebări interesante