Submission #1263444

#TimeUsernameProblemLanguageResultExecution timeMemory
1263444ulvixSnail (NOI18_snail)C++20
0 / 100
1118 ms184060 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...