#include #include int main() { unsigned int n, m, temp, i; unsigned long int s = 0, s2 = 0; unsigned int a[100000]; scanf("%u%u", &n, &m); for (i = 0; i < n; i++) { scanf("%u", &a[i]); scanf("%u", &temp); } quickSort(a, 0, n-1); // for (i = 0; i < n; i++) // { // printf("%d ", a[i]); // } for (i = 0; i < n / 2; i++) { s += a[i]; } for (i = n/2; i < n; i++) s2 += m - a[i]; printf("%lu %lu", s2, s); return 0; } void quickSort( unsigned int a[], unsigned int l, unsigned int r) { int j; if( l < r ) { // divide and conquer j = partition( a, l, r); quickSort( a, l, j-1); quickSort( a, j+1, r); } } int partition( unsigned int a[], unsigned int l, unsigned int r) { unsigned int pivot, i, j, t; pivot = a[l]; i = l; j = r+1; while( 1) { do ++i; while( a[i] >= pivot && i <= r ); do --j; while( a[j] < pivot ); if( i >= j ) break; t = a[i]; a[i] = a[j]; a[j] = t; } t = a[l]; a[l] = a[j]; a[j] = t; return j; }