Preview:
#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;
}
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