#include <iostream>
#include <vector>
#include <queue>
#include <set>
// Заполняем вектор частот символов
// Сохраняем все символы алфавита в std::set
void get_data(std::vector< std::pair<char, double> > &alpha){
std::vector<char> fr(256);
char c;
double freq;
while(std::cin >> c){
fr[c]++; // Вектор хранит количество символов с кодом c
// Добавить новую пару в том случае, если символа c нет в векторе
alpha.push_back(std::make_pair(c, -1));
}
for(auto it = alpha.begin(); it != alpha.end(); it++)
(*it).second = 1.0 * fr[(*it).first] / alpha.size();
}
void Huffman(std::set<char> &alpha, std::vector<double> &freq){
}
int main(){
std::vector< std::pair<char, double> > alpha;
get_data(alpha);
for(auto it = alpha.begin(); it != alpha.end(); it++){
std::cout << (*it).first;
std::cout << " ";
std::cout << (*it).second;
std::cout << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzZXQ+CgovLyDQl9Cw0L/QvtC70L3Rj9C10Lwg0LLQtdC60YLQvtGAINGH0LDRgdGC0L7RgiDRgdC40LzQstC+0LvQvtCyCi8vINCh0L7RhdGA0LDQvdGP0LXQvCDQstGB0LUg0YHQuNC80LLQvtC70Ysg0LDQu9GE0LDQstC40YLQsCDQsiBzdGQ6OnNldAp2b2lkIGdldF9kYXRhKHN0ZDo6dmVjdG9yPCBzdGQ6OnBhaXI8Y2hhciwgZG91YmxlPiA+ICZhbHBoYSl7CglzdGQ6OnZlY3RvcjxjaGFyPiBmcigyNTYpOwoJY2hhciBjOwoJZG91YmxlIGZyZXE7CgoJd2hpbGUoc3RkOjpjaW4gPj4gYyl7CgkJZnJbY10rKzsJLy8g0JLQtdC60YLQvtGAINGF0YDQsNC90LjRgiDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdC40LzQstC+0LvQvtCyINGBINC60L7QtNC+0LwgYwoJCS8vINCU0L7QsdCw0LLQuNGC0Ywg0L3QvtCy0YPRjiDQv9Cw0YDRgyDQsiDRgtC+0Lwg0YHQu9GD0YfQsNC1LCDQtdGB0LvQuCDRgdC40LzQstC+0LvQsCBjINC90LXRgiDQsiDQstC10LrRgtC+0YDQtQoJCWFscGhhLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihjLCAtMSkpOwoJfQoJZm9yKGF1dG8gaXQgPSBhbHBoYS5iZWdpbigpOyBpdCAhPSBhbHBoYS5lbmQoKTsgaXQrKykKCQkoKml0KS5zZWNvbmQgPSAxLjAgKiBmclsoKml0KS5maXJzdF0gLyBhbHBoYS5zaXplKCk7Cn0KCnZvaWQgSHVmZm1hbihzdGQ6OnNldDxjaGFyPiAmYWxwaGEsIHN0ZDo6dmVjdG9yPGRvdWJsZT4gJmZyZXEpewoKfQoKaW50IG1haW4oKXsKCXN0ZDo6dmVjdG9yPCBzdGQ6OnBhaXI8Y2hhciwgZG91YmxlPiA+IGFscGhhOwoKCWdldF9kYXRhKGFscGhhKTsKCQoJZm9yKGF1dG8gaXQgPSBhbHBoYS5iZWdpbigpOyBpdCAhPSBhbHBoYS5lbmQoKTsgaXQrKyl7CgkJc3RkOjpjb3V0IDw8ICgqaXQpLmZpcnN0OwoJCXN0ZDo6Y291dCA8PCAiICI7CgkJc3RkOjpjb3V0IDw8ICgqaXQpLnNlY29uZDsKCQlzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJfQp9