Submission #1109673

#TimeUsernameProblemLanguageResultExecution timeMemory
1109673qrnBrunhilda’s Birthday (BOI13_brunhilda)C++14
40 / 100
1085 ms1352 KiB
#include <bits/stdc++.h>
using namespace std;

#define SPEED ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);


#define int long long
#define endl "\n"
#define ALL(X) X.begin(), X.end()

const int sz = 10005, inf = 1e9;

vector<int>dp(sz);

int f(vector<int> &a, int w) {
    int t = 0;
    for(int i = 0; i < (int)a.size(); i++) {
        t = max(t, (w % a[i]));
    }
    if(t == 0) t = -1;
    return t;
}

void solve() {
    int m, q;
    cin >> m >> q;
    vector<int> a(m);
    for(int i = 0; i < m; i++) cin >> a[i];
    if(q == 1) {
        int ans = 0;
        int qq;
        cin >> qq;
        bool cock = false;
        while(qq > 0) {
            int tmp = f(a, qq);
            if(tmp == -1) {
                cock = true;
                break;
            }
            qq -= tmp;
            ans++;
        }
        if(cock) {
            cout << "oo" << endl;
        } else {
            cout << ans << endl;
        }  
    } else {
        dp[0] = 0;
        for(int i = 1; i < sz; i++) dp[i] = inf;
        for(int i = 1; i < sz; i++) {
            int mini = inf;
            for(int j = 0; j < m; j++) {
                mini = min(mini, dp[i - (i % a[j])]);
            }
            dp[i] = mini + 1;   
        }
        while(q--) {
            int qq;
            cin >> qq;
            // for(int i = 1; i <= 10; i++) {
            //     cout << dp[i] << " ";
            // }
            // cout << endl;

            if(dp[qq] == inf + 1) {
                cout << "oo" << endl;
            } else {
                cout << dp[qq] << endl;
            }
        }
    }
}

signed main() {
    SPEED;
    int tst = 1;
    // cin >> tst;
    while(tst--) {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...