Submission #222286

#TimeUsernameProblemLanguageResultExecution timeMemory
222286lycBrunhilda’s Birthday (BOI13_brunhilda)C++14
44.92 / 100
1100 ms42604 KiB
#include <bits/stdc++.h>
using namespace std;

#define SZ(x) (int)(x).size()
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
#define RFOR(i, a, b) for (int i=a;i>=b;--i)

const int MX_M = 1e5+5;
const int MX_Q = 1e5+5;
const int MX_P = 1e7+5;

int M, Q, P[MX_M];
int dp[MX_P];

using ii = pair<int, int>;
priority_queue<ii, vector<ii>, greater<ii> > pq;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    cin >> M >> Q;
    FOR(i,1,M){
        cin >> P[i];
        pq.emplace(0,i);
    }

    const int infty = 1e9;
    dp[0] = 0;
    FOR(i,1,MX_P-1){
        while (1) {
            ii u = pq.top();
            if (u.first + P[u.second] <= i) {
                pq.pop();
                pq.emplace(u.first + P[u.second], u.second);
            } else break;
        }
        int j = pq.top().first;
        if (j < i) dp[i] = min(infty, dp[j] + 1);
        else dp[i] = infty;
    }

    FOR(i,1,Q){
        int N; cin >> N;
        if (dp[N] == infty) cout << "oo" << '\n';
        else cout << dp[N] << '\n';
    }
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...