結果

問題 No.3448 ABBBBBBBBC
コンテスト
ユーザー SnowBeenDiding
提出日時 2026-02-20 22:22:57
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
結果
AC  
実行時間 55 ms / 2,000 ms
コード長 1,163 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 10,041 ms
コンパイル使用メモリ 420,692 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2026-02-20 22:23:13
合計ジャッジ時間 10,651 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 4
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>

#include <atcoder/all>
#define rep(i, a, b) for (ll i = (ll)(a); i < (ll)(b); i++)
using namespace atcoder;
using namespace std;

typedef long long ll;

int f(int c0, int c1, int n) {
    int ret = n;
    if (c0 > c1) swap(c0, c1);
    if (ret >= c0) ret++;
    if (ret >= c1) ret++;
    return ret;
}

void solve() {
    ll n, k;
    cin >> n >> k;
    k--;
    int c0 = k / (n * 72) + 1;
    k %= n * 72;
    int c1 = k / (n * 8);
    if (c1 >= c0) c1++;
    k %= n * 8;
    int p = c1;
    if (c0 < c1) p--;
    int q = 8 - p;
    ll pcnt = n * p, lcnt = n * q;

    ll len, cl;
    if (k < pcnt) {
        len = k / p + 1;
        cl = k % p;
    } else {
        ll nk = k - pcnt;
        len = n + nk / q;
        cl = nk % q + p;
    }
    if (len >= n) len = n - (len - n);
    cl = f(c0, c1, cl);
    len += 2;
    cout << len << ' ' << c0 << ' ' << c1 << ' ' << cl << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout << fixed << setprecision(15);
    int t;
    cin >> t;
    while (t--) solve();
}
0