第三题是双指针: 代码: #include<bits/stdc++.h> using namespace std; int main(void) { int n,m; cin >> n >> m; vector<int> v; for (int i = 0; i < n; ++i) { int t; cin >> t; v.push_back(t); } int l=-1, r=0; int sum = 0; int ans = 0; while (r<v.size()) { if (sum >= -m) { ans = max(r - l-1, ans); sum += v[r]; ++r; } else { ++l; sum -= v[l]; } } if (sum >= -m) { ans = max(r - l - 1, ans); // sum += v[r]; ++r; } cout << ans; return 0; }