Submission #58741

#TimeUsernameProblemLanguageResultExecution timeMemory
58741BatrrBrunhilda’s Birthday (BOI13_brunhilda)C++14
100 / 100
790 ms117988 KiB
#include <bits/stdc++.h> /* #pragma comment(linker, "/stack:200000000") #pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3,sse4") */ #define ll long long #define f first #define s second #define pb push_back #define mp make_pair #define IOS ios_base::sync_with_stdio(0); using namespace std; const ll maxn=2e5+123,inf=1e18,mod=1e9+7,N=1e7+12,LOG=20; int n,q,a[maxn],ans[N],cur,pos,nxt,nxtval,mx[N]; int main(){ #ifdef LOCAL freopen ("test.in", "r", stdin); #endif cin>>n>>q; for(int i=0;i<n;i++){ cin>>a[i]; for(int j=0;j<N;j+=a[i]) mx[j]=max(mx[j],a[i]); } for(int i=0;i<N;i++) ans[i]=-1; ans[0]=0; cur=mx[0]; pos=1; nxt=nxtval=-1; while(true){ while(pos<N && pos%cur!=0){ ans[pos]=ans[pos/cur*cur]+1; if( pos+mx[pos]>nxt ) nxtval=mx[pos],nxt=pos+mx[pos]; pos++; } if(pos==N || nxtval==-1) break; cur=nxtval; nxt=nxtval=-1; } while(q--){ int x; cin>>x; if(ans[x]==-1) cout<<"oo"<<endl; else cout<<ans[x]<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...