# include <cstdio> #include <algorithm> const int MAX_N = 100; int L, n, x[MAX_N]; void solve() { int minT = 0; for (int i = 0; i < n; ++i) { minT = std::max(minT, std::min(x[i], L - x[i])); } int maxT = 0; for (int i = 0; i < n; ++i) { maxT = std::max(maxT, std::max(x[i], L - x[i])); } printf("%d %d\n", minT, maxT); } int main() { int cases; scanf("%d", &cases); while (cases-- > 0) { scanf("%d%d", &L, &n); for (int i = 0; i < n; ++i) { scanf("%d", x + i); } solve(); } return 0; }
抽签问题:从若干个数中抽取4个数使它们的和是k。即前面的3sum,4sum问题。
k1 + k2 + k3 + k4 = m变换成:k1 + k2 = m - k3 - k4
时间: 2024-12-25 08:47:52