Website Summary Files Commits Branches @commit @diff @stats
path: root / Week06 / Exercise10.cpp
blob: 99049ad5f8d857ffffae576a4bab207365884754 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>

int main() {
	const unsigned int SIZE = 4;

	unsigned long numbers[SIZE];
	for (int i = 0; i < SIZE; i++)
		std::cin >> numbers[i];

	unsigned long max_number = 0;

	/* Това решение е ГРОЗНО!
	 * Има по-добри начини да се реализира, но тук се показва
	 * доста видно комбинаториката, т.е. как се избират индексите.
	 */

	// 4 избора за първото число
	for (int i = 0; i < SIZE; i++) {

		// 3 избора за второто число
		for (int j = 0; j < SIZE; j++) {
			if (j == i) continue;

			// 2 избора за третото число
			for (int k = 0; k < SIZE; k++) {
				if (k == j || k == i) continue;

				// 1 избор за четвъртото число
				for (int l = 0; l < SIZE; l++) {
					if (l == k || l == j || l == i) continue;

					unsigned long current_number = numbers[i] * 1000000000 +
					                               numbers[j] * 1000000    +
					                               numbers[k] * 1000       +
					                               numbers[l];
					if (current_number > max_number)
						max_number = current_number;
				}
			}
		}
	}

	std::cout << max_number << std::endl;

	return 0;
}