Informatică, întrebare adresată de Diuva, 9 ani în urmă

Cerința
Se dă un număr natural n și un șir de numere naturale din intervalul [1,n] ordonate crescător. Să se afișeze în ordine strict crescătoare toate numerele din intervalul [1,n] care nu se găsesc în șirul dat. Dacă nu există asemenea numere se afișează Nu exista.

Date de intrare
Fișierul de intrare numere25.in conține pe prima linie numărul n, iar pe a doua linie șir de numere naturale din intervalul [1,n] ordonate crescător.

Date de ieșire
Fișierul de ieșire numere25.out va conține pe prima linie în ordine strict crescătoare toate numerele din intervalul [1,n] care nu se găsesc în șirul dat. Dacă nu există asemenea numere fișierul va conține textul Nu exista.

Restricții și precizări
1 ≤ n ≤ 107;
în enunțul original, 1 ≤ n ≤ 109; aici limitele au fost micșorate, datorită dimensiunilor prea mari ale fișierelor de intrare/ieșire;
proiectați un algoritm eficient din punctul de vedere al memoriei şi al timpului de executare:
se recomandă evitarea utilizării tablourilor sau a altor structuri de date similare.


boiustef: am luat 90 si un raspuns gresit... nu vad până ce, de ce...
Diuva: imi poti da macar codul tau?
Diuva: eu am luat 40..
boiustef: Să râzi nu alta... înloc să scriu "Nu exista", am scris "nu exista" şi dădea greşit... :)))
Diuva: sii...am problema 2809 Crescator1 am pus codul pe profilul meu iau numai 80p..de ce?

Răspunsuri la întrebare

Răspuns de boiustef
2

Răspuns:

Explicație:

#include <iostream>

#include <fstream>

using namespace std;

ifstream f("numere25.in");

ofstream g("numere25.out");

long long n, num, a=0, i, ok=0;

int main()

{

   f >> n;

   

   while (f >> num)

   {

       for (i=a+1; i<num; ++i)

           {g << i << " "; ok=1;}

       a=num;

   }

   for (i=a+1; i<=n; ++i)

           {g << i << " "; ok=1;}

   if (ok==0) g << "Nu exista";

}

Alte întrebări interesante