結果

問題 No.3245 Payment with 8-rep Currency
ユーザー AngrySadEight
提出日時 2025-07-24 02:26:18
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 2,064 bytes
コンパイル時間 691 ms
コンパイル使用メモリ 77,548 KB
実行使用メモリ 7,716 KB
最終ジャッジ日時 2025-08-12 07:58:02
合計ジャッジ時間 11,721 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 27 WA * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <cassert>
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;

int main() {
    ll ub = 8888 * 6 + 888 * 6;

    vector<bool> aps(ub + 1, false);
    vector<ll> A(ub + 1, -1);
    vector<ll> B(ub + 1, -1);
    vector<ll> C(ub + 1, -1);
    vector<ll> D(ub + 1, -1);

    for (ll i = 0; i * 8888 <= ub; i++) {
        for (ll j = 0; j * 888 + i * 8888 <= ub; j++) {
            for (ll k = 0; k * 88 + j * 888 + i * 8888 <= ub; k++) {
                for (ll l = 0; l * 8 + k * 88 + j * 888 + i * 8888 <= ub; l++) {
                    if (l >= i + j + k) {
                        break;
                    }
                    bool pos = true;
                    if (i >= j + k + l) {
                        pos = false;
                    }
                    if (j >= i + k + l) {
                        pos = false;
                    }
                    if (k >= i + j + l) {
                        pos = false;
                    }
                    if (pos) {
                        ll val = l * 8 + k * 88 + j * 888 + i * 8888;
                        aps[l * 8 + k * 88 + j * 888 + i * 8888] = true;
                        D[val] = i;
                        C[val] = j;
                        B[val] = k;
                        A[val] = l;
                    }
                }
            }
        }
    }

    ll T;
    cin >> T;
    while (T--) {
        ll N;
        cin >> N;
        if (N % 8 != 0) {
            cout << -1 << endl;
            continue;
        }
        if (N < ub) {
            if (A[N] != -1) {
                cout << A[N] << " " << B[N] << " " << C[N] << " " << D[N]
                     << endl;
            } else {
                cout << -1 << endl;
            }
        } else {
            ll d = 6;
            ll c = 6;
            ll b = 0;
            ll a = (N - 8888 * 6 - 888 * 6) / 8;

            ll div = a / 12;

            a -= div * 11;
            b += div;
            cout << a << " " << b << " " << c << " " << d << endl;
        }
    }
}
0