Informatică, întrebare adresată de tda22, 8 ani în urmă

AJUTOR VA ROG!
Fișierul text bac.txt conține numere naturale din intervalul [1,104]: pe prima linie un număr n, pe a
doua linie un șir de n numere, iar pe fiecare dintre următoarele linii, până la finalul fișierului, câte o
pereche de numere, reprezentând extremitățile unui interval închis. Numerele aflate pe aceeași linie a
fișierului sunt în ordine crescătoare și sunt separate prin câte un spațiu.
Se cere să se afișeze pe ecran numărul de intervale care nu conțin niciun termen al
șirului aflat pe a doua linie a fișierului. Proiectați un algoritm eficient din punctul de
vedere al timpului de executare.
Exemplu: dacă fișierul conține numerele alăturate, se afișează pe ecran 3.

5
4 8 9 16 25
1 3
2 5
9 15
5 7
20 100
10 12

Răspunsuri la întrebare

Răspuns de andrei750238
8

#include <iostream>

#include <fstream>

using namespace std;

ifstream fin("bac.txt");

int main(){

int n, a, b, x;

bool v[104]={0};

fin >> n;

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

fin >>x, v[x]=1;

int cnt=0;

while(fin >> a >> b){

bool verif=false;

for(int i=a;i<=b;i++)

if(v[i]!=0) verif=true;

if(verif==false) cnt++;

}

cout << cnt;

return 0;}

Alte întrebări interesante