#include #include inline int readzakolik(char *s) { int i = -1, sum = 0; while (s[++i] != 0) { if (s[i] < '0' || s[i] > '9') continue; sum *= 10; sum += s[i] - '0'; } return sum; } struct bid { char name[100]; int price; }; struct por { bool sell; int i; }; int main() { int poc; char name[100], kdo[100], co[10], zakolik[20]; bid sells[1000], buys[1000]; por p[1000]; int sc, bc, pc; scanf("%d %s\n", &poc, name); while (poc != 0 || strcmp(name, "END") != 0) { sc = bc = pc = 0; for (int i = 0; i < poc; i++) { scanf("%s %s %s\n", kdo, co, zakolik); bid nb; strcpy(nb.name, kdo); nb.price = readzakolik(zakolik); por np; if (strcmp(co, "sell") == 0) { np.i = sc; sells[sc++] = nb; np.sell = true; } else { np.i = bc; buys[bc++] = nb; np.sell = false; } p[pc++] = np; } printf("%s\n", name); for (int i = 0; i < pc; i++) { if (p[i].sell) { int j = p[i].i; int count = 0; printf("%s:", sells[j].name); for (int k = 0; k < bc; k++) { if (buys[k].price >= sells[j].price) { printf(" %s", buys[k].name); count++; } } if (count == 0) printf(" NO-ONE"); printf("\n"); } else { int j = p[i].i; int count = 0; printf("%s:", buys[j].name); for (int k = 0; k < sc; k++) { if (sells[k].price <= buys[j].price) { printf(" %s", sells[k].name); count++; } } if (count == 0) printf(" NO-ONE"); printf("\n"); } } scanf("%d %s\n", &poc, name); } return 0; }