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

Cerința:
Se dau n numere naturale. Determinaţi cele mai mari două numere cu trei cifre care nu apar printre numerele date.

Date de intrare:
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire:
Programul va afișa pe ecran numerele a b, a < b reprezentând cele două numere determinate. Dacă nu se pot găsi două astfel de numere, se va afişa mesajul NU EXISTA.

Restricții și precizări:
1 ≤ n ≤ 500.000
cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu:

Intrare
10
10 994 1010 999 1010 998 1005 994 996 995

Ieșire
993 997

Răspunsuri la întrebare

Răspuns de blindseeker90
1
#include <iostream>
using namespace std;

int gaseste_in_sir(int v[],int n,int x){
int i,gasit=0;
for(i=0;i<n;i++){
if(v[i]==x){
gasit=1;
break;
}
}
return gasit;
}
int main(){

int n,i,x,a,b,nr_in_afara_sirului=0;
cin>>n;
int v[n];
for(i=0;i<n;i++){
cin>>v[i];
}

x=999;
while(nr_in_afara_sirului<2){
if(gaseste_in_sir(v,n,x)==0){
nr_in_afara_sirului++;

if(nr_in_afara_sirului==1){
b=x;
}
else{
a=x;
}
}
x--;
}
cout<<a<<" "<<b;
return 0;
}

ionutg38: #include <iostream>

using namespace std;
int n,a;
short x[1005];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
if(a>99&&a<=999)
x[a]=1;
}
int nr=0;
int i=999,a,b;
while(i>99&&nr<2)
{
if(!x[i])
{
nr++;
if(nr==1)
a=i;
if(nr==2)
b=i;
}
i--;
}
if(nr==2)
{
if(a>b)
swap(a,b);
cout<<a<<' '<<b;
}
else
cout<<"NU EXISTA";
return 0;
}
Alte întrebări interesante