# PBinfo #3916 – elim_m – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Scrieți un program care citește două numere naturale n și m și care afișează cel mai mare număr care se poate obține eliminând din n exact m cifre, unde m este mai mic decât numărul de cifre ale lui n. Cifrele rămase în n nu-și pot schimba ordinea.

Date de intrare
Programul citește de la tastatură numerele n și m.

Date de ieșire
Programul va afișa pe ecran numărul x, reprezentând valoarea cerută.

Restricții și precizări

n are cel mult 17 cifre.
m este mai mic decât numărul de cifre ale lui n.
m este număr nenul.

Exemplu:
Intrare

3452234 4
Ieșire

534
Explicație
Cifrele numărului n sunt, in ordine, 3 4 5 2 2 3 4 și eliminând 4 dintre acestea, cel mai mare număr este 534.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int A[25],X[25],m;
long long x,n;
long long numar()
{
    long long x=0;
    for(int i=1;i<=m;i++)
        x=x*10+A[X[i]];
    return x;
}
void back(int k)
{
    for(int i=X[k-1]+1;i<=n;i++)
        {
            X[k]=i;
            if(k==m)
            {
                long long nr=numar();
                if(nr>x) x=nr;
            }
            else back(k+1);
        }
}
int main()
{
    cin>>n>>m;
    int nc=0;
    while(n)
    {
        A[++nc]=n%10;
        n=n/10;
    }
    n=nc;
    for(int i=1,j=n;i<j;i++,j--)
        swap(A[i],A[j]);
    m=n-m;
    back(1);
    cout<<x;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3916)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3916/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3916/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
