#include #include #include #include #include using namespace std; class Wordfeud_Pool { public: Wordfeud_Pool(istream& is) : pool{} { char c; int count; while ( is >> c >> count ) { for (int i{}; i < count; ++i ) pool.push_back(c); } random_device rnd; shuffle( begin(pool), end(pool), rnd); } int size() const { return pool.size(); } char draw() { char c = pool.back(); pool.pop_back(); return c; } private: vector pool; }; int main(int argc, char* argv[]) { if ( argc != 2 ) { cerr << "Usage: " << argv[0] << " FILE" << endl; return 1; } ifstream ifs{argv[1]}; if ( ! ifs ) { cerr << "Error: '" << argv[1] << "' can not be opened!" << endl; return 1; } Wordfeud_Pool pool(ifs); int count; while ( pool.size() > 0 && cin >> count ) { if ( count > pool.size() ) count = pool.size(); for (int i{}; i < count; ++i ) { cout << pool.draw(); } cout << endl; } return 0; }