Răspuns :

a)

Programul citeste primul numar din fisier, si initialieaza un k cu 1 pentru ca aceasta este pozitia minima unde acesta poate aparea cand sirul este sortat, iar apoi citeste restul numerelor si pe masura ce se gasesc numere mai mici decat primul citit, k va creste cu 1. La final se afiseaza k ce contine pozitia finala a primului numar.

Algoritmul este eficient din punct de vedere al memoriei utilizare deoarece foloseste un numar restrans de variabile simple. Este eficient si din punct de vedere al timpului de executare deoarece rezolva problema intr-o complexitate liniara.

b)

#include <iostream>

#include <fstream>

using namespace std;

int main() {

   int x, y, k = 1;

   ifstream f("bac.txt");

   f >> x;

   while (f >> y)

       if (y < x)

           k++;

   f.close();

   cout << k;

   return 0;

}