#include #include struct os { char id[25]; int seller; int sum1, sum2; }; struct os ludia[1000]; int main(void) { char line[1024]; char com[1024]; int n; int found; int x, y, i, j; char op[100]; while (1) { fgets(line, sizeof(line), stdin); line[strlen(line)-1] = '\0'; sscanf(line, "%d %s", &n, com); if (n == 0 && !strcmp(com, "END")) break; for (i = 0; i < n; i++) { ludia[i].id[0] = '\0'; ludia[i].seller = 0; ludia[i].sum1= 0; ludia[i].sum2 = 0; } /* for (i = 0; i < n; i++) { buy[i] = sell[i] = 0; }*/ for (i = 0; i < n; i++) { fgets(line, sizeof(line), stdin); line[strlen(line)-1] = '\0'; sscanf(line, "%s %s %d.%d", ludia[i].id, op, &(ludia[i].sum1), &(ludia[i].sum2)); if (!strcmp(op, "buy")) { ludia[i].seller = 0; } else if (!strcmp(op, "sell")) { ludia[i].seller = 1; } } printf("%s\n", com); for (i = 0; i < n; i++) { if (ludia[i].seller) { printf("%s:", ludia[i].id); found = 0; for (j = 0; j < n; j++) { if (j == i) continue; if (ludia[j].seller) continue; if (ludia[j].sum1 < ludia[i].sum1) continue; if (ludia[j].sum1 == ludia[i].sum1 && ludia[j].sum2 < ludia[i].sum2) continue; found = 1; printf(" %s", ludia[j].id); } if (!found) printf(" NO-ONE\n"); else printf("\n"); } else { printf("%s:", ludia[i].id); found = 0; for (j = 0; j < n; j++) { if (j == i) continue; if (!ludia[j].seller) continue; if (ludia[j].sum1 > ludia[i].sum1) continue; if (ludia[j].sum1 == ludia[i].sum1 && ludia[j].sum2 > ludia[i].sum2) continue; found = 1; printf(" %s", ludia[j].id); } if (!found) printf(" NO-ONE\n"); else printf("\n"); } } } return 0; }