/*
TASK: KORTELES
LANG: C
*/
#include <stdio.h>
#include <stdlib.h>

#define BYLA_DAT "KORTELES.DAT"
#define BYLA_REZ "KORTELES.REZ"

#define MAX 100010 
                      
    /* Kortelės tipo aprašas */
    typedef struct kortele {
        /* mažesnysis, didesnysis skaičiai ir jų suma */
        int m, d, sum;
    } kortele;
    
/* elementų palyginimo funkcija, reikalinga
   standartinei rikiavimo funkcijai qsort() */
int cmpf(const void *a, const void *b)
{
    return ((kortele *)a)->sum - ((kortele *)b)->sum;
}

    kortele K[MAX];  /* kortelės          */
    int     N;       /* kortelių skaičius */
    int     REZ = 0; /* atsakymas         */
    
void skaityk(void)
{
    int i, a, b;
    FILE *f = fopen(BYLA_DAT, "r");
    fscanf(f, "%d\n", &N);
    for (i = 0; i < N; i++) {
        fscanf(f, "%d %d\n", &a, &b);
        K[i].m = (a < b) ? a : b;
        K[i].d = (a > b) ? a : b;
        K[i].sum = a + b;
    }
    fclose(f);
}

void rasyk(void)
{
    int i;
    FILE *f = fopen(BYLA_REZ, "w");
    fprintf(f, "%d\n", REZ);
    fclose(f);
}

int main(void)
{
    int i; 
    
    skaityk();
    qsort(K, N, sizeof(kortele), cmpf);
    /* Pirmoje išrikiuoto masyvo pusėje yra kortelės su 
       mažiausiomis skaičių sumomis, antroje - su didžiausiomis */
    for (i = 0; i < N/2; i++)
        REZ += K[i].m - K[N/2 + i].d;

    rasyk();
    return 0;
}
