improve by only searching halfway
[advent21.git] / 07a.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <limits.h>
5
6 int main()
7 {
8 char *buf = NULL;
9 size_t len = 0;
10 int crabs[1000] = {0};
11 int ncrabs = 0;
12 int maxp = 0;
13 int minp = INT_MAX;
14
15 getline(&buf, &len, stdin);
16 char *p = strtok(buf, ",");
17 crabs[ncrabs] = atoi(p);
18 maxp = crabs[ncrabs];
19 minp = crabs[ncrabs++];
20 while ((p = strtok(NULL, ",")) != NULL) {
21 crabs[ncrabs] = atoi(p);
22 maxp = maxp < crabs[ncrabs] ? crabs[ncrabs] : maxp;
23 minp = minp > crabs[ncrabs] ? crabs[ncrabs] : minp;
24 ncrabs++;
25 }
26
27 int mindist = INT_MAX;
28 for (int i = minp; i<=maxp; i++) {
29 int dist = 0;
30 for (int j = 0; j<ncrabs; j++)
31 dist += abs(crabs[j]-i);
32 if (dist < mindist)
33 mindist = dist;
34 }
35 printf("%d\n", mindist);
36 }