n, R, G = map(int, input().split()) a = [0] + list(map(int, input().split())) a.sort() l, r, ans = 1, a[n] - a[1] + 1, 0 dp = [[0] * 2001 for _ in range(2001)] P = [0] * 2001 Q = [0] * 2001

def check(L): global dp, P, Q dp = [[0] * 2001 for _ in range(2001)] P = [0] * 2001 Q = [0] * 2001 for i in range(1, n+1): for j in range(i, n+1): if a[j] - a[i] + 1 <= L: P[i] = j if a[j] - a[i] + 1 <= 2 * L: Q[i] = j P[n+1] = Q[n+1] = n for i in range(R+1): for j in range(G+1): if i > 0: dp[i][j] = max(dp[i][j], P[dp[i-1][j]+1]) if j > 0: dp[i][j] = max(dp[i][j], Q[dp[i][j-1]+1]) return dp[R][G] == n

while l <= r: mid = (l + r) // 2 if check(mid): ans = mid r = mid - 1 else: l = mid + 1

print(ans

请用python语言转换下面的c++代码:#includebitsstdc++husing namespace std;int nRGa2001l=1r=0ans=0;int dp20012001P2001Q2001;bool checkint L	memsetdp0sizeofdp;	memsetP0sizeofP;	memsetQ0sizeofQ;	forint i=1;i=n;i++		fo

原文地址: https://www.cveoy.top/t/topic/iF7o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录