401
Cerința
Se dă un număr natural n (1≤n≤106 ), și un șir cu cel mult 1000000 de elemente, numere naturale de forma 10p (0≤p≤9). Se cere să se afișeze numărul care ar apărea pe poziția n în șirul ordonat crescător. Dacă șirul are mai puțin de n termeni, se afișează mesajul Nu exista.
Date de intrare
Fișierul de intrare puteri6.in conține pe prima linie numărul n, iar pe a doua linie elementele șirului dat, separate prin spații.
Date de ieșire
Fișierul de ieșire puteri6.out va conține pe prima linie numărul care ar apărea pe poziția n în șirul ordonat crescător sau mesajul Nu exista, dacă șirul are mai puțin de n termeni.
Restricții și precizări
- Pentru determinarea numărului cerut se utilizează un algoritm eficient din punctul de vedere al timpului de executare. Se recomandă evitarea memorării valorilor elementelor din șir într-un tablou sau în altă structură de date similară.
Exemplu
puteri6.in
5 100 100000 1 100000 1000 100 10
puteri6.out
1000
#include <bits/stdc++.h>
using namespace std;
ifstream cin("puteri6.in");
ofstream cout("puteri6.out");
int f[10];
int main()
{
int n , x;
cin >> n;
while(cin >> x)
{
int p = 0;
while(x)
p++ , x/=10;
f[p-1]++;
}
for(int i = 0 ; i <= 9 && n != 0; ++i)
{
for(int j = 1 ; j <= f[i] && n != 0; ++j)
{
n--;
if(n==0)
cout << pow(10 , i);
}
}
if(n > 0)
cout << "Nu exista";
return 0;
}
Comentarii