#include <iostream> #include <vector> using namespace std; int twoStacks(int maxSum, const vector<int>& a, const vector<int>& b) { int sum = 0, count = 0, i = 0, j = 0; while (i < a.size() && sum + a[i] <= maxSum) { sum += a[i]; i++; } count = i; while (j < b.size() && i >= 0) { sum += b[j]; j++; while (sum > maxSum && i > 0) { i--; sum -= a[i]; } if (sum <= maxSum) { count = max(count, i + j); } } return count; } int main() { int g; cin >> g; while (g--) { int n, m, maxSum; cin >> n >> m >> maxSum; vector<int> a(n); vector<int> b(m); for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < m; i++) { cin >> b[i]; } cout << twoStacks(maxSum, a, b) << endl; } return 0; }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter