intmain(){ int T; staticint a[MAXN]; staticint p[MAXN];
scanf("%d", &T); while (T--) { int n, k; scanf("%d%d", &n, &k); for (int i = 1; i <= n; ++i) { scanf("%d", a + i); } int ans = 0x3f3f3f3f; int mn = 0x3f3f3f3f; priority_queue<pair<int, int> > pq; for (int i = 1; i <= n; ++i) { p[i] = 1; } for (int i = 1; i <= n; ++i) { pq.push(make_pair(a[i], i)); mn = min(mn, a[i]); } while (1) { int mx = pq.top().first; int i = pq.top().second; pq.pop(); ans = min(ans, mx - mn); if (p[i] == k) { break; } p[i] += 1; int v = a[i] / p[i]; pq.push(make_pair(v, i)); mn = min(mn, v); } printf("%d\n", ans); }
intmain(){ int T; staticint a[MAXN]; staticint p[MAXN];
scanf("%d", &T); while (T--) { int n, k; scanf("%d%d", &n, &k); for (int i = 1; i <= n; ++i) { scanf("%d", a + i); } int ans = 0x3f3f3f3f; int mn = 0x3f3f3f3f; priority_queue<pair<int, int> > pq; for (int i = 1; i <= n; ++i) { p[i] = 1; } for (int i = 1; i <= n; ++i) { pq.push(make_pair(a[i], i)); mn = min(mn, a[i]); } while (!pq.empty()) { int mx = pq.top().first; int i = pq.top().second; pq.pop(); ans = min(ans, mx - mn); if (mx == 0) break; p[i] = a[i] / mx + 1; if (p[i] > k) break; int v = a[i] / p[i]; pq.push(make_pair(v, i)); mn = min(mn, v); } printf("%d\n", ans); }
intmain(){ int T; staticint a[MAXN]; staticint ge[MAXV];
scanf("%d", &T); while (T--) { int n, k; scanf("%d%d", &n, &k); a[0] = 0; for (int i = 1; i <= n; ++i) { scanf("%d", a + i); } for (int i = n; i; --i) { for (int j = a[i]; j > a[i-1]; --j) { ge[j] = a[i]; } } ge[0] = a[1]; int ans = 0x3f3f3f3f; for (int v = a[n] / k; v <= a[n]; ++v) { int mn = 0x3f3f3f3f; for (int u = 1; u <= a[n] / (v + 1) + 1; ++u) { int ai = ge[(u - 1) * (v + 1)]; if (ai < u * (v + 1)) { mn = min(mn, ai / u); } } ans = min(ans, v - mn); } printf("%d\n", ans); }