Cerința
Se dă un număr natural n
(1≤n≤10
6
), și un șir cu cel mult 1000000
de elemente, numere naturale de forma 10
p
(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; }