#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define ff first
#define ss second
using namespace std;
using namespace __gnu_pbds;
typedef long long ll;
typedef pair<ll,ll> pll;
const ll sz=2e5+100;
const ll mod=1e9+7;
const ll inf=1e17;
const ll lg=40;
template<class T>
using indexed_set=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
long long arr[sz];
void solve(){
ll n,m;
cin>>n>>m;
for(ll i=0;i<n;i++) cin>>arr[i];
vector<long long> pref(n),prefmx(n);
pref[0]=prefmx[0]=arr[0];
for(ll i=1;i<n;i++){
pref[i]=pref[i-1]+arr[i];
prefmx[i]=max(pref[i],prefmx[i-1]);
}
while(m--){
ll x;
cin>>x;
if(prefmx[n-1]>=x){
cout<<lower_bound(all(prefmx),x)-prefmx.begin()<<' ';
continue;
}
if(pref[n-1]<=0){
cout<<"-1 ";
continue;
}
ll k=(x-prefmx[n-1]+pref[n-1]-1)/pref[n-1];
ll d=x-k*pref[n-1];
ll idx=lower_bound(all(prefmx),d)-prefmx.begin();
cout<<k*n+idx<<' ';
}
cout<<'\n';
}
int main(){
//freopen("sleepy.in","r",stdin);
//freopen("sleepy.out","w",stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
long long t=1;
cin>>t;
for(ll _=1;_<=t;_++){
//cout<<"Scenario #"<<_<<":\n";
solve();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |