#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);
std::vector<char> stored(256, 1);
char c;
while(std::cin >> c){
fr[c]++; // Вектор хранит количество символов с кодом c
// Добавить новую пару в том случае, если символа c нет в векторе
if(stored[c] != -1){
alpha.push_back(std::make_pair(c, -1));
stored[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+ICZhbHBoYSl7CglzdGQ6OnZlY3RvcjxjaGFyPiBmcigyNTYpOwoJc3RkOjp2ZWN0b3I8Y2hhcj4gc3RvcmVkKDI1NiwgMSk7CgljaGFyIGM7CgoJd2hpbGUoc3RkOjpjaW4gPj4gYyl7CgkJZnJbY10rKzsJLy8g0JLQtdC60YLQvtGAINGF0YDQsNC90LjRgiDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdC40LzQstC+0LvQvtCyINGBINC60L7QtNC+0LwgYwoJCS8vINCU0L7QsdCw0LLQuNGC0Ywg0L3QvtCy0YPRjiDQv9Cw0YDRgyDQsiDRgtC+0Lwg0YHQu9GD0YfQsNC1LCDQtdGB0LvQuCDRgdC40LzQstC+0LvQsCBjINC90LXRgiDQsiDQstC10LrRgtC+0YDQtQoJCWlmKHN0b3JlZFtjXSAhPSAtMSl7CgkJCWFscGhhLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihjLCAtMSkpOwoJCQlzdG9yZWRbY10gPSAtMTsKCQl9Cgl9Cglmb3IoYXV0byBpdCA9IGFscGhhLmJlZ2luKCk7IGl0ICE9IGFscGhhLmVuZCgpOyBpdCsrKQoJCWl0LT5zZWNvbmQgPSAxLjAgKiBmcltpdC0+Zmlyc3RdIC8gYWxwaGEuc2l6ZSgpOwp9Cgp2b2lkIEh1ZmZtYW4oc3RkOjpzZXQ8Y2hhcj4gJmFscGhhLCBzdGQ6OnZlY3Rvcjxkb3VibGU+ICZmcmVxKXsKCn0KCmludCBtYWluKCl7CglzdGQ6OnZlY3Rvcjwgc3RkOjpwYWlyPGNoYXIsIGRvdWJsZT4gPiBhbHBoYTsKCglnZXRfZGF0YShhbHBoYSk7CgkKCWZvcihhdXRvIGl0ID0gYWxwaGEuYmVnaW4oKTsgaXQgIT0gYWxwaGEuZW5kKCk7IGl0KyspewoJCXN0ZDo6Y291dCA8PCBpdC0+Zmlyc3Q7CgkJc3RkOjpjb3V0IDw8ICIgIjsKCQlzdGQ6OmNvdXQgPDwgaXQtPnNlY29uZDsKCQlzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoJfQp9