B题二分求佬看看哪儿错了
只过了87.5%
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 5e3 + 100; ll a[N],suma[N]; ll b[N],sumb[N]; ll n,m,u; bool check(int mid){ mid --; for(int i = 1 ; i <= n - mid; i++) { ll sum_a = suma[i+mid] - suma[i-1]; ll sum_b = sumb[i+mid] - sumb[i-1]; if(sum_a <= m && sum_b <= u) return true; } return false; } int main() { cin >> n >> m >> u; for(int i = 1 ; i <= n ; i ++){ cin >> a[i]; suma[i] = suma[i-1] + a[i];} for(int i = 1 ; i <= n ; i ++){ cin >> b[i]; sumb[i] = sumb[i-1] + b[i];} int l = 0 , r = n; while(l < r){ int mid = (l + r + 1) >> 1; if(check(mid)) l = mid; else r = mid - 1; } cout << l << endl; }