Submission #163947

#TimeUsernameProblemLanguageResultExecution timeMemory
163947Leonardo_PaesBrunhilda’s Birthday (BOI13_brunhilda)C++17
20 / 100
60 ms1016 KiB
#include <bits/stdc++.h>

using namespace std;

const int maxn = 1e4+10, inf = 0x3f3f3f3f;

int n, q, prime[maxn], dp[maxn];

int solve(int pos){
    if(pos <= 0) return 0;
    if(dp[pos]!=-1) return dp[pos];

    int tot = inf;

    for(int i=1; i<=n; i++){
        int aux = pos % prime[i];

        if(aux) tot = min(tot, 1 + solve(pos - aux));
    }

    return dp[pos] = tot;
}

int main(){
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);

    cin >> n >> q;

    for(int i=1; i<=n; i++) cin >> prime[i];

    memset(dp, -1, sizeof dp);

    while(q--){
        int nj;

        cin >> nj;

        if(solve(nj) != inf) cout << solve(nj) << "\n";
        else cout << "oo\n";
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...