제출 #493723

#제출 시각아이디문제언어결과실행 시간메모리
493723_Monkey_Brunhilda’s Birthday (BOI13_brunhilda)C++17
77.46 / 100
232 ms81044 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define el '\n' #define ld long double const int maxn=1e5+1,nn=1e7+1; void amax(int &x,int y){if(y>x)x=y;} int a[maxn],f[nn],ut[nn]; int m,n,q,oo=1e9,p; bool ok; int take(int z){ if(f[z]>=0) return f[z]; if(ut[z]==0){ f[z]=oo; } else { f[z]=min(oo,take(z-ut[z])+1); } return f[z]; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); cin >> m >> q; for(int i=0;i<m;++i) cin >> a[i]; sort(a+0,a+m); for(int i=0;i<m;++i) for(int j=a[i]-1;j<nn;j+=a[i]) ut[j]=a[i]-1; for(int i=nn-2;i>0;--i) amax(ut[i],ut[i+1]-1); memset(f,-1,sizeof f); f[0]=0; while(q--){ cin >> n; p=take(n); if(p==oo){ cout << "oo" << el; } else { cout << p << el; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...