56 lines
1.3 KiB
C
56 lines
1.3 KiB
C
#include "_.h"
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
if (argc != 2)
|
|
return 1;
|
|
|
|
char *input = argv[1];
|
|
char **inputs = str_split(strdup(input), '\n');
|
|
|
|
int *list_one = calloc(strlen(input) + 1, sizeof(int *));
|
|
int *list_two = calloc(strlen(input) + 1, sizeof(int *));
|
|
|
|
|
|
int i = 0;
|
|
for (i = 0; inputs[i] != NULL; i++) {
|
|
char **inputs_int = str_split(strdup(inputs[i]), ' ');
|
|
list_one[i] = atoi(inputs_int[0]);
|
|
list_two[i] = atoi(inputs_int[1]);
|
|
}
|
|
|
|
list_one[i] = -2;
|
|
list_two[i] = -2;
|
|
|
|
int distance = 0;
|
|
|
|
for (i = 0; list_one[i] != -2; i++) {
|
|
|
|
int min_one = INT_MAX;
|
|
int min_two = INT_MAX;
|
|
int min_one_index = 0;
|
|
int min_two_index = 0;
|
|
|
|
for (int j = 0; list_two[j] != -2; j++) {
|
|
if (list_one[j] != -1) {
|
|
min_one = MIN(list_one[j], min_one);
|
|
if (list_one[j] == min_one)
|
|
min_one_index = j;
|
|
}
|
|
if (list_two[j] != -1) {
|
|
min_two = MIN(list_two[j], min_two);
|
|
if (list_two[j] == min_two)
|
|
min_two_index = j;
|
|
}
|
|
}
|
|
|
|
distance += ABS(min_one - min_two);
|
|
list_one[min_one_index] = -1;
|
|
list_two[min_two_index] = -1;
|
|
}
|
|
|
|
printf("distance: %d\n", distance);
|
|
|
|
return 0;
|
|
}
|