#include #include #include #define MAX_NAZIV 21 typedef struct { char domacin[MAX_NAZIV]; char gost[MAX_NAZIV]; int d_gol; int g_gol; } DUEL; void greska(); int poredi(const void *a, const void *b); int main() { DUEL *niz; int n; scanf("%d", &n); if(n <= 0) greska(); niz = (DUEL*)malloc(n * sizeof(DUEL)); if(niz == NULL) greska(); int i; for(i = 0; i < n; i++) { scanf("%s %s%d%d", niz[i].domacin, niz[i].gost, &niz[i].d_gol, &niz[i].g_gol); if(niz[i].d_gol < 0 || niz[i].g_gol < 0) greska(); } qsort(niz, n, sizeof(DUEL), poredi); for(i = 0; i < n; i++) printf("%s %s\n", niz[i].domacin, niz[i].gost); free(niz); return 0; } void greska() { fprintf(stderr, "-1"); exit(EXIT_FAILURE); } int poredi(const void *a, const void *b) { DUEL *prvi = (DUEL*)a; DUEL *drugi = (DUEL*)b; int prvi_golrazlika = abs(prvi->d_gol - prvi->g_gol); int drugi_golrazlika = abs(drugi->d_gol - drugi->g_gol); if(prvi_golrazlika < drugi_golrazlika) return -1; else if(prvi_golrazlika > drugi_golrazlika) return 1; else { int domacini = strcmp(prvi->domacin, drugi->domacin); if(domacini < 0) return 1; else if(domacini > 0) return -1; else return strcmp(prvi->gost, drugi->gost); } }