Submission #742836

#TimeUsernameProblemLanguageResultExecution timeMemory
742836irmuunBrunhilda’s Birthday (BOI13_brunhilda)C++17
97.78 / 100
601 ms159024 KiB
#include<bits/stdc++.h>
 
using namespace std;
 
#define pb push_back
#define ll long long
#define ff first
#define ss second
#define all(s) s.begin(),s.end()

const int MAX=2e7+5;

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int m,q;
    cin>>m>>q;
    int p[m+5];
    for(int i=1;i<=m;i++){
        cin>>p[i];
    }
    vector<int>mn(MAX,MAX);
    for(int i=1;i<=m;i++){
        for(int k=0;(k+1)*p[i]<MAX;k++){
            mn[(k+1)*p[i]-1]=min(mn[(k+1)*p[i]-1],k*p[i]);
        }
    }
    for(int i=MAX-2;i>=0;i--){
        mn[i]=min(mn[i],mn[i+1]);
    }
    vector<int>ans(MAX);
    for(int i=1;i<MAX;i++){
        if(mn[i]==i||mn[i]==MAX){
            ans[i]=MAX;
        }
        else{
            ans[i]=ans[mn[i]]+1;
        }
    }
    while(q--){
        int n;
        cin>>n;
        if(ans[n]==MAX){
            cout<<"oo\n";
        }
        else{
            cout<<ans[n]<<"\n";
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...