👤

Cerința
Se dau n - 1 numere naturale distincte de la 1 la n. Să se gaseasca numărul lipsă.

Date de intrare
Fișierul de intrare lipsa.in conține pe prima linie numărul n, iar pe a doua linie n - 1 numere naturale separate prin spații.

Date de ieșire
Fișierul de ieșire lipsa.out va conține pe prima linie numărul căutat.

Restricții și precizări
2 ≤ n ≤ 1.000.000



Exemplu
lipsa.in

5
5 3 1 2
lipsa.out

4

Am rezolvat problema dar am obtinut 60 pct din cauza erorii Caught fatal signal 11.Cum o pot rezolva?
#include

using namespace std;
ifstream fin("lipsa.in");
ofstream fout("lipsa.out");
int i,n,a,j,fr[100005];
int main()
{fin>>n;
for(i=1;i<=n-1;i++){
fin>>a;
fr[a]=1;}
for(i=1;i<=n;i++)
if(fr[i]==0)

fout << i;
return 0;
}


Răspuns :

primesti acea eroare deoarece iese din vector, problema spune pana-ntr-un milion (1000000), pe cand vectorul tau e de 100 de mii (100005). vectorul mai mare si nu mai prinesti acea problema ; de asemenea pwntru ca tu folosesti variabila fr doar pentru 1 respectiv 0 ( true /false ) ti-as recomanda bool, acesta este un tip de date special pentru asemenea situatii te ajura la memorie deoarece un int ocupa 16/32 de biti, pe cand un bool doar 1 bit.


sper ca te ajuta; daca mai ai intrebari, nu ezita sa-ntrebi; bafta. :)