6 static inline int distance(int crabs
[], int ncrabs
, int pos
)
9 for (int i
= 0; i
<ncrabs
; i
++) {
10 int d
= abs(crabs
[i
]-pos
);
20 int crabs
[1000] = {0};
25 getline(&buf
, &len
, stdin
);
26 char *p
= strtok(buf
, ",");
27 crabs
[ncrabs
] = atoi(p
);
29 minp
= crabs
[ncrabs
++];
30 while ((p
= strtok(NULL
, ",")) != NULL
) {
31 crabs
[ncrabs
] = atoi(p
);
32 maxp
= maxp
< crabs
[ncrabs
] ? crabs
[ncrabs
] : maxp
;
33 minp
= minp
> crabs
[ncrabs
] ? crabs
[ncrabs
] : minp
;
37 int middledist
= INT_MAX
;
38 int middle
= (maxp
+minp
)/2;
39 while (middle
!= maxp
&& middle
!= minp
) {
40 middledist
= distance(crabs
, ncrabs
, middle
);
41 if (distance(crabs
, ncrabs
, middle
+1) > middledist
) {
43 middle
= (middle
+minp
)/2;
46 middle
= (middle
+maxp
)/2;
49 printf("%d\n", middledist
);