From 4bc82188482e63ec52acb71985039d3d33378a7a Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Wed, 28 Mar 2018 16:50:18 +0700 Subject: Revise 09/TP-HN-2014 --- 09/TP-HN-2014/cau4.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 09/TP-HN-2014/cau4.c (limited to '09/TP-HN-2014/cau4.c') diff --git a/09/TP-HN-2014/cau4.c b/09/TP-HN-2014/cau4.c new file mode 100644 index 0000000..49e3df6 --- /dev/null +++ b/09/TP-HN-2014/cau4.c @@ -0,0 +1,48 @@ +#include +#include + +int cmp(const void *x, const void *y) +{ + return *(int *) x - *(int *) y; +} + +int main() +{ + FILE *f = fopen("CAU4.INP", "r"); + int n, d, k; + fscanf(f, "%d %d", &n, &d); + int *a = (int *) malloc(n * sizeof(int)); + for (k = 0; k < n; k++) + fscanf(f, "%d", a + k); + k = a[--d]; + fclose(f); + + qsort(a, n, sizeof(int), cmp); + int t = 0; + for (int i = 1; i < n; i++) + t += abs(a[i] - a[i - 1]); + int idx = (int *) bsearch(&k, a, n, sizeof(int), cmp) - a; + if ((idx - d) * (idx - n + d + 1)) { + int t0, t1; + if (idx < d) { + t0 = (t - abs(a[n - d + idx] - a[n - d + idx - 1]) + + abs(a[n - d + idx] - *a)); + d = n - d - 1; + t1 = (t - abs(a[idx - d] - a[idx - d - 1]) + + abs(a[n - 1] - a[idx - d - 1])); + } else { + t0 = (t - abs(a[idx - d] - a[idx - d - 1]) + + abs(a[n - 1] - a[idx - d - 1])); + d = n - d - 1; + t1 = (t - abs(a[n - d + idx] - a[n - d + idx - 1]) + + abs(a[n - d + idx] - *a)); + } + t = (t0 < t1) ? t0 : t1; + } + + f = fopen("CAU4.OUT", "w"); + fprintf(f, "%d\n", t); + fclose(f); + + return 0; +} -- cgit 1.4.1