#include #include #include #include using namespace std; struct Agent { string name; double price; string action; int index; /// Agent(string n, double p, string a = "", int i = -1) { name = n; price = p; action = a; index = i; /// } }; bool cmp(Agent a, Agent b) { return (a.price <= b.price); } bool si(Agent a, Agent b) { return (a.index <= b.index); } int main() { string no_one = " NO-ONE"; int count, index; string name, action, agent; double price; vector buyers, sellers, all, print; /// while(1) { all.clear(); sellers.clear(); buyers.clear(); // HLAVA cin >> count >> name; if(count == 0 && name == "END") break; for(int i = 0; i < count; ++i) { cin >> agent; cin >> action; cin >> price; all.push_back(Agent(agent, price, action)); index = all.size() - 1; if(action == "buy") buyers.push_back(Agent(agent, price, action, index)); else sellers.push_back(Agent(agent, price, action, index)); } sort(buyers.begin(), buyers.end(), cmp); sort(sellers.begin(), sellers.end(), cmp); // vypis cout << name << endl; for(int i = 0; i < all.size(); ++i) { print.clear(); cout << all[i].name << ":"; if(all[i].action == "buy") { int j = 0; while(j < sellers.size()) { if(sellers[j].price > all[i].price) break; print.push_back(sellers[j]); j++; } } else { int j = buyers.size() - 1; while(j >= 0) { if(buyers[j].price < all[i].price) break; print.push_back(buyers[j]); j--; } } sort(print.begin(), print.end(), si); for(int i = 0; i < print.size(); ++i) cout << " " << print[i].name; if(print.size() == 0) cout << no_one; cout << endl; } } return 0; }