Submission #46999

#TimeUsernameProblemLanguageResultExecution timeMemory
46999rsalescBrunhilda’s Birthday (BOI13_brunhilda)C++14
25.87 / 100
1120 ms262144 KiB
#include <bits/stdc++.h> using namespace std; const int P = 1e7+10; const int M = 1e5+10; struct Node { int v; Node * nxt; }; int mx; Node * q[P]; int dp[P]; Node* add(Node * no, int x) { return new Node({x, no}); } int main() { ios::sync_with_stdio(false); cin.tie(0); int m, Q; cin >> m >> Q; for(int i = 0; i < m; i++) { int x; cin >> x; q[0] = add(q[0], x); } for(int i = 1; i < P; i++) dp[i] = 1e9+10; for(int i = 0; i < P; i++) { Node* cur = q[i]; while(cur) { int p = cur->v; int nxt = i+p; int til = min(nxt, P); for(int j = max(mx, i+1); j < til; j++) { dp[j] = dp[i]+1; } mx = max(mx, nxt); if(nxt < P) q[nxt] = add(q[nxt], p); cur = cur->nxt; } } for(int i = 0; i < Q; i++) { int x; cin >> x; if(dp[x] > 1e9) cout << "oo" << endl; else cout << dp[x] << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...