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 ≤ 10
7
;- în enunțul original,
1 ≤ n ≤ 10
9
; 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.
Exemplu
numere25.in
10 3 4 4 8
numere25.out
1 2 5 6 7 9 10
#include <fstream> using namespace std; ifstream cin("numere25.in"); ofstream cout("numere25.out"); int main() { int n,y,x=0,ok=0; cin>>n; while(cin>>y) { for(int i=x+1;i<y;i++) { cout<<i<<" "; ok=1; } x=y; } for(int i=y+1;i<=n;i++) cout<<i<<" ",ok=1; if(ok==0) cout<<"Nu exista"; return 0; }