# PBinfo #2298 – magnitudine – Rezolvare C++

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

## Enunț

Cerința
În această problemă veţi primi două numere natural N, şi K. Definim magnitudinea unui număr ca fiind diferenţa dintre cifra maximă şi cifra minimă ale lui. De exemplu, magnitudinea lui 9748 este 9 – 4 = 5. 

Eliminaţi maxim K cifre din numărul N, astfel încât magnitudinea numărului obţinut să fie cât mai mică.

Date de intrare
În fișierul magnitudine.in se află pe prima linie numerele N si K separate prin spaţii.

Date de ieșire
Afișați în fișierul magnitudine.out magnitudinea minimă care se poate obţine după eliminarea a K cifre ale lui N.

Restricții și precizări

1 ≤ N ≤ 1018
pentru teste în valoare de 30 puncte, K = 0
pentru teste în valoare de 30 puncte, K = 1
pentru teste în valoare de 40 puncte, K = 2

Exemplu 1:
magnitudine.in

9748 1
magnitudine.out

2
Explicație
Daca eliminam cifra 4 obtinem 978 cu magnitudine = 2.

Exemplu 2:
magnitudine.in

90021 1
magnitudine.out

2
Explicație
Daca eliminam cifra 9 obtinem 0021 cu magnitudine = 2.

## Cod sursă C++

```cpp
#include <stdio.h>
long long N, K;
long long cif[20], l;
int main() {
	freopen("magnitudine.in", "rt", stdin);
	freopen("magnitudine.out", "wt", stdout);
	scanf("%lld %lld", &N, &K);
	while (N) {
		cif[l++] = N % 10;
		N /= 10;
	}
	int rez = 9;
	for (int elimin1 = 0; elimin1 < l; elimin1++) {
		for (int elimin2 = 0; elimin2 < l; elimin2++) {
			int min = 9, max = 0;
			for (int i = 0; i < l; i++) {
				if (K == 0 || // nu evit nimic
					(K == 1 && i != elimin1) || // evit orice pozitie
					(K == 2 && i != elimin1 && i != elimin2)) { // evit orice doua pozitii
					if (min > cif[i]) {
						min = cif[i];
					}
					if (max < cif[i]) {
						max = cif[i];
					}
				}
			}
			if (rez > max - min) {
				rez = max - min;
			}
		}
	}
	printf("%lld\n", rez);	
	fclose(stdout);
	return 0;
}
```

## Resurse

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