#include #include #include #include using namespace std; struct sbid { float price; int index; }; struct sname { char name[21]; float price; bool seller; }; bool mygreater(const sbid& a, const sbid& b) { return a.price < b.price; } bool mylower(const sbid& a, const sbid& b) { return a.price > b.price; } bool olols(const sbid& a, const sbid& b) { return a.index < b.index; } int main(int argc, char **argv) { vector names; list sell; list buy; while(true) { names.clear(); sell.clear(); buy.clear(); int countbids; char cname[21]; scanf("%d %s", &countbids, cname); if (countbids == 0 && (strcmp(cname, "END") == 0)) { break; } printf("%s\n", cname); char namebid[21]; char operation[6]; float amount; for (int i = 0; i < countbids; ++i) { sname a; scanf("%s %s %f", a.name, operation, &a.price); names.push_back(a); //printf("OP: %c\n", operation[0]); sbid s; s.price = a.price; s.index = i; if ( operation[0] == 's' ) { names[i].seller = true; sell.push_back(s); //printf("SELL PUSHBACK %s %d\n", a.name, s.index); } else { names[i].seller = false; buy.push_back(s); //printf("BUY PUSHBACK %s %d\n", a.name, s.index); } } sell.sort(mygreater); buy.sort(mylower); vector::iterator iter2 = names.begin(); list orderlol; while( iter2 != names.end()) { orderlol.clear(); bool noone = true; if ((*iter2).seller) { printf("%s: ", (*iter2).name); list::iterator iterbuy = buy.begin(); while( iterbuy != buy.end()) { if ((*iterbuy).price < (*iter2).price) { break; } noone = false; //printf("%s ", names[(*iterbuy).index].name); orderlol.push_back((*iterbuy)); iterbuy++; } } else { printf("%s: ", (*iter2).name); list::iterator itersell = sell.begin(); while( itersell != sell.end()) { if ((*itersell).price > (*iter2).price) { break; } noone = false; //printf("%s ", names[(*itersell).index].name); orderlol.push_back((*itersell)); itersell++; } } orderlol.sort(olols); list::iterator io = orderlol.begin(); while( io != orderlol.end()) { printf("%s ", names[(*io).index].name); io++; } if (noone) printf("NO-ONE"); printf("\n"); iter2++; } } return 0; }