Submission #493711

#TimeUsernameProblemLanguageResultExecution timeMemory
493711_Monkey_Brunhilda’s Birthday (BOI13_brunhilda)C++17
0 / 100
51 ms78772 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; int a[maxn],n,m,q,p,oo,ans,k,f[nn],ut[nn]; int t; bool ok; void check(){ t=1; ok=0; for(int i=0;i<m;++i){ k=t*a[i]; if(t*a[i]<t || t*a[i]>oo || k/a[i]!=t){ ok=1; return; } t=t*a[i]; } } int sol(int z){ if(f[z]>=0) return f[z]; return f[z]=sol(z-ut[z])+1; } int main(){ freopen("T.INP","r",stdin); freopen("T.OUT","w",stdout); 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); memset(f,-1,sizeof f); f[0]=0; for(int i=0;i<m;++i){ for(int j=1;j*a[i]<nn;j++){ ut[j*a[i]-1]=max(a[i]-1,ut[j*a[i]-1]); } } int ma; for(int i=1;i<a[m-1];++i) ut[i]=i; for(int z=a[m-1];z<nn;++z) if(ut[z]==0){ ma=0; for(int i=m-1;i>=0;--i){ if(ma>=a[i]) break; if(z%a[i]>ma) ma=z%a[i]; } ut[z]=ma; } oo=1e7; check(); while(q--){ cin >> n; if(ok){ cout << sol(n); } else { if(n>=t){ cout << "oo"; } else { cout << sol(n); } } cout << el; } return 0; }

Compilation message (stderr)

brunhilda.cpp: In function 'int main()':
brunhilda.cpp:28:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |     freopen("T.INP","r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~
brunhilda.cpp:29:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   29 |     freopen("T.OUT","w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...