V=K*I; V - объем сообщения K - количество символов в сообщении I - вес одного символа; N=2^I, где N мощность алфавита (N≤32 ⇒ I≤5); V₁=V₂ (объёмы сообщений); 2,5*K₁ = K₂ V₁=K₁*I₁; V₂=K₂*I₂=2,5*K₁*I₂; приравняем объёмы K₁*I₁=2,5*K₁*I₂ ⇒ I₁ = 2,5*I₂ решим уравнение в целых числах, учитывая, что любое I≤5 ( можно подставлять числа для I₁ от 1 до 5 и найти то решение, при котором I₂ - целое число); у меня получилось I₁ = 5; I₂=2 т.к. 5=2,5*2 нам нужны мощности 1го и 2го алфавитов N₁=2^I₁=2⁵=32 символа; N₂=2^I₂=2²=4 символа.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector <int> v(n);
for(int i = 0; i < n; i++) {
cin >> v[i];
}
int a, b, c, d; //1, 2 макс.; 1, 2 мин.
a = c = v[0];
b = d = v[1];
if(a > b) swap(a, b);
if(c > d) swap(c, d);
for(int i = 2; i < n; i++) {
if(v[i] > a) {
if(a > b) b = a;
a = v[i];
} else if(v[i] > b) {
b = v[i];
}
if(v[i] < c) {
d = c;
c = v[i];
} else if(v[i] < d) {
d = v[i];
}
}
if(a > b) swap(a, b);
if(c > d) swap(c, d);
if(a * b > c * d) cout << a << " " << b;
else cout << c << " " << d;
}
Объяснение:
Как то так