結果
問題 |
No.3241 Make Multiplication of 8
|
ユーザー |
|
提出日時 | 2025-08-22 21:16:11 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 27 ms / 2,000 ms |
コード長 | 1,013 bytes |
コンパイル時間 | 1,836 ms |
コンパイル使用メモリ | 194,880 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-08-22 21:16:21 |
合計ジャッジ時間 | 3,202 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 23 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; using ull = unsigned long long; template <class T> using max_heap = priority_queue<T>; template <class T> using min_heap = priority_queue<T, vector<T>, greater<>>; ll ll_min = numeric_limits<ll>::min(); ll ll_max = numeric_limits<ll>::max(); ll ALPHABET_N = 26; static const ll INF = ll_max / 10; #define rep(i, n) for (ll i = (ll)0; i < (ll)n; i++) #define rep_(i, k, n) for (ll i = (ll)k; i < (ll)n; i++) #define all(a) a.begin(), a.end() int main() { ios::sync_with_stdio(false); cin.tie(0); ll n; cin >> n; ll cnt1 = 0, cnt2 = 0, over3 = 0; rep(i, n) { ll a, b; cin >> a >> b; ll cnt = 0; while (a % 2 == 0 && cnt < 3) { a /= 2; cnt++; } if (cnt == 1) cnt1 += b; else if (cnt == 2) cnt2 += b; else if (cnt >= 3) over3 += b; } ll ans = over3; ll pair1_2 = min(cnt1, cnt2); ans += pair1_2; cnt1 -= pair1_2; cnt2 -= pair1_2; ans += cnt1 / 3; ans += cnt2 / 2; cout << ans << endl; return 0; }