Link to this code: https://cses.fi/paste/a473ac042cd64688d65825/
/* 777 */
#include <bits/stdc++.h>
using namespace std;

pair<int, int> dummy_pair = make_pair(-1, -1);

class SegmentTree {
   private:
    vector<int> arr;
    vector<pair<int, int>> tree;

    int merge(int a, int b) {
        int res = max(a, b);
        return res;
    }

   public:
    SegmentTree(vector<int>& nums) {
        this->arr = nums;
        this->tree.resize(4 * nums.size(), dummy_pair);
    }

    void build(int v, int lo, int hi) {
        if (lo == hi) {
            tree[v] = make_pair(arr[lo], lo);
            return;
        }
        int mid = lo + (hi - lo) / 2;
        build(2 * v, lo, mid);
        build(2 * v + 1, mid + 1, hi);
        tree[v] =
            make_pair(merge(tree[2 * v].first, tree[2 * v + 1].first), -1);
    }

    int update_and_query(int v, int lo, int hi, int x) {
        // cout << v << " " << lo << " " << hi << " " << x << endl;
        if (lo == hi) {
            auto [value, index] = tree[v];
            if (x <= value) {
                tree[v] = make_pair(value - x, index);
                return index;
            }
            return -1;
        }

        int mid = lo + (hi - lo) / 2;
        int removed_index = -1;
        if (x <= tree[2 * v].first) {
            removed_index = update_and_query(2 * v, lo, mid, x);
        } else if (x <= tree[2 * v + 1].first) {
            removed_index = update_and_query(2 * v + 1, mid + 1, hi, x);
        }

        tree[v] =
            make_pair(merge(tree[2 * v].first, tree[2 * v + 1].first), -1);

        return removed_index;
    }
};

void solve() {
    int N, Q;
    cin >> N >> Q;
    vector<int> arr(N);
    for (int& x : arr) cin >> x;

    SegmentTree* ST = new SegmentTree(arr);
    ST->build(1, 0, N - 1);

    vector<int> qs(Q);
    for (int q = 0; q < Q; ++q) {
        int num;
        cin >> num;
        int ans = ST->update_and_query(1, 0, N - 1, num);
        qs[q] = ans + 1;
    }

    for (int x : qs) cout << x << ' ';
}

int32_t main() {
    // ios_base::sync_with_stdio(0);
    // cin.tie(0);
    // cout.tie(0);
    int T = 1;
    // cin >> T;
    while (T--) solve();
}