#include #include #include typedef struct { char name[30]; int hunger; int enthusiasm; char pants_size[4]; } MINYON; int compar(const void *a1, const void *b1) { MINYON *a=(MINYON*)a1; MINYON *b=(MINYON*)b1; if(a->enthusiasm > b->enthusiasm) return -1; else if(a->enthusiasm < b->enthusiasm) return 1; else return strcmp(a->name, b->name); } int main(int argc, char **argv) { char line[100], *token; int i, db=0; MINYON minions[20]; while( fgets(line, 100, stdin) ) { token = strtok(line, ";"); strcpy(minions[db].name, token); token = strtok(NULL, ";"); minions[db].hunger = atoi(token); token = strtok(NULL, ";"); minions[db].enthusiasm = atoi(token); token = strtok(NULL, "\n"); strcpy(minions[db].pants_size, token); db++; } qsort(minions, db, sizeof(MINYON), compar); for(i=0; i<2; i++) printf("%s %d (%s)\n", minions[i].name, minions[i].hunger, minions[i].pants_size); return 0; }