#include #include #include #define MAX 1024 static int N, n; /* N puvodni delka, n nejblizsi vyssi mocnina 2 */ static int S[MAX], T[2*MAX], A[MAX], P[MAX]; static inline int max(int p, int q) { return (p>q) ? p : q; } /* index S posledniho prvku, ktery je <= v */ static int find_last_le(int v) { int i=0, x=n; while ((x /= 2) >= 1) if (S[i+x] <= v) i += x; return i; } static int cmp(const void *X, const void *Y) { int x = *(int *)X; int y = *(int *)Y; return (x>y)-(x=0; i--) { l = find_last_le(A[i]-k) + n; if (S[l-n] < A[i]-k) l++; /* dorovnat na prvni prvek */ r = find_last_le(A[i]+k) + n+1; m = 0; while (l