Fișierul bac.in conține un șir de numere naturale distincte, din intervalul [1,109]. 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
#include <fstream>
using namespace std;
ifstream f_in("bac.in");
ofstream f_out("bac.out");
int main()
{
int element, soluție[3] = { 0 };
while (f_in >> element)
if (element % 100 == 20)
if (element < soluție[2] || !soluție[2])
if (element < soluție[1] || !soluție[1]) {
if (soluție[1] < soluție[2] || !soluție[2])
soluție[2] = soluție[1];
if (element < soluție[0] || !soluție[0]) {
if (soluție[0] < soluție[1] || !soluție[1])
soluție[1] = soluție[0];
soluție[0] = element;
}
else
soluție[1] = element;
}
else
soluție[2] = element;
for (int element : soluție)
f_out << element << ' ';
return 0;
}
soluție[2] = soluție[1];