제출 #1289737

#제출 시각아이디문제언어결과실행 시간메모리
1289737g4yuhgBrunhilda’s Birthday (BOI13_brunhilda)C++20
40 / 100
12 ms1596 KiB
#include<bits/stdc++.h> typedef int ll; #define pii pair<ll, ll> #define fi first #define se second #define endl '\n' #define TASK "" #define N 100005 #define LOG 16 using namespace std; const ll inf = 1e9; bool ghuy4g; ll m, q, p[N], a[N], mxn, mxp; ll dp[N], nxt[N]; void sub1() { for (int i = 1; i <= 1e4; i ++) dp[i] = inf; for (int i = 1; i < mxp; i ++) { dp[i] = 1; } for (int i = mxp; i <= mxn; i ++) { dp[i] = inf; for (int j = 1; j <= m; j ++) { ll du = i % p[j]; if (du == 0) continue; dp[i] = min(dp[i], dp[i - du] + 1); } } for (int i = 1; i <= q; i ++) { if (dp[a[i]] == inf) { cout << "oo" << endl; } else { cout << dp[a[i]] << endl; } } } void sub2(ll cur) { ll dem = 0; sort(p + 1, p + 1 + m, greater<ll>()); for (int i = 1; i <= m; i ++) { ll j = i; while (j <= m && p[j] == p[i]) { j ++ ; } nxt[i] = j; i = j - 1; dem ++ ; } ll ans = 0, ok = 1; while (true) { if (cur == 0) break; ans ++ ; bool flag = 0; ll cnt = 0; ll new_cur = cur; for (int i = 1; i <= m; i = nxt[i]) { if (cur % p[i] == 0) continue; cnt ++ ; //cur -= cur % p[i]; flag = 1; new_cur = min(new_cur, cur - cur % p[i]); if (cnt > 1e8 / dem) break; } cur = new_cur; if (flag == 0) { ok = 0; break; } if (cur == 0) break; } if (ok == 0) { cout << "oo" << endl; } else { cout << ans << endl; } } bool klinh; signed main() { // freopen("test.inp", "r", stdin); //freopen("test.out", "w", stdout); //srand(time(0)); ios_base::sync_with_stdio(0); cin.tie(0); cin >> m >> q; for (int i = 1; i <= m; i ++) { cin >> p[i]; mxp = max(mxp, p[i]); } for (int i = 1; i <= q; i ++) { cin >> a[i]; mxn = max(mxn, a[i]); } /*for (int i = 1; i <= q; i ++) { sub2(a[i]); } return 0;*/ if (mxn <= 1e4 && m <= 1e4 && q <= 1e4) { sub1(); } else if (q == 1) { for (int i = 1; i <= q; i ++) { sub2(a[i]); } } cerr << fabs(&klinh - &ghuy4g) / double(1024 * 1024); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...