#include #include #include #include #include #include long long gcd(long long a, long long b) { while(b > 0) { a %= b; if (a == 0) { return b; } b %= a; } return a; } void distance(long long H[], long long x, long long z, long long *aa, long long *nn, long long *dd) { long long n = H[z] - H[x+1]; long long d = H[x] - H[x+1]; long long g = gcd(n, d); *aa = z-x-1; *nn = n / g; *dd = d / g; } void dist(long long H[], long long N, long long *aa, long long *nn, long long *dd) { long long L[N]; long long c = -1; long long a = 0; long long n = 0; long long d = 1; for(long long i = 0; i < N; i++) { while (c >= 0 && H[L[c]] < H[i]) { c--; } if (c >= 0) { long long a2; long long n2; long long d2; distance(H, L[c], i, &a2, &n2, &d2); if (a2 > a || (a2 == a && n2 * d > d2 * n)) { a = a2; n = n2; d = d2; } } c++; L[c] = i; } *aa = a; *nn = n; *dd = d; } int main() { long long N; scanf("%lld", &N); long long H[N]; long long H2[N]; for(long long i = 0; i < N; i++) { scanf("%lld", &(H[i])); H2[N-1-i] = H[i]; } long long a1, a2, n1, n2, d1, d2; dist(H, N, &a1, &n1, &d1); dist(H2, N, &a2, &n2, &d2); if (a1 > a2) { printf("%lld/%lld\n", a1 * d1 + n1, d1); } else if (a2 > a1) { printf("%lld/%lld\n", a2 * d2 + n2, d2); } else if (n1 * d2 > n2 * d1) { printf("%lld/%lld\n", a1 * d1 + n1, d1); } else if (a2 == 0) { printf("0\n"); } else { printf("%lld/%lld\n", a2 * d2 + n2, d2); } }