#include #include #include // upper_bound 用 #include // partial_sum 用 using namespace std; int main() { // 入出力の高速化 ios::sync_with_stdio(false); cin.tie(nullptr); int N, Q; if (!(cin >> N >> Q)) return 0; vector T(N); for (int i = 0; i < N; ++i) { cin >> T[i]; } // 1. 累積和を計算して完了時刻 Ci の配列を作成する // C[i] = T[0] + T[1] + ... + T[i] vector C(N); partial_sum(T.begin(), T.end(), C.begin()); // 2. 各クエリに対して二分探索を行う for (int j = 0; j < Q; ++j) { long long X; cin >> X; // upper_bound は「Xを超える最初の要素」を指すイテレータを返す // つまり、その手前までの要素がすべて「X以下」である auto it = upper_bound(C.begin(), C.end(), X); // 先頭からの距離(個数)を出力 cout << distance(C.begin(), it) << "\n"; } return 0; }