fbpx

Problema #2843 – Puteri6 – Rezolvari PBInfo

de Mihai-Alexandru

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

S-ar putea sa iti placa