結果

問題 No.3559 +A,-B
コンテスト
ユーザー 土川智之
提出日時 2026-05-29 20:30:34
言語 C++23
(gcc 15.2.0 + boost 1.89.0)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,578 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 3,259 ms
コンパイル使用メモリ 337,340 KB
実行使用メモリ 1,304,648 KB
最終ジャッジ日時 2026-05-29 20:31:18
合計ジャッジ時間 7,402 ms
ジャッジサーバーID
(参考情報)
judge4_1 / judge3_0
このコードへのチャレンジ
(要ログイン)
サブタスク 配点 結果
部分点1 10 % AC * 2 RE * 1 MLE * 1
部分点2 60 % WA * 2 MLE * 1 -- * 4
部分点3 30 % AC * 2 WA * 2 RE * 1 MLE * 2 -- * 13
合計 0 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <bits/stdc++.h>
using namespace std;

using LL = long long;

int main() {

    int t;
    cin >> t;

    while (t--) {
        LL n, x, y, a, b;
        cin >> n >> x >> y >> a >> b;

        LL S = x + y;
        if (a > 0 && b > 0) {

            LL M = a + b;
            LL g = gcd(a, b);

            LL period = M / g;

            LL t0 = ((S + b) % M + M) % M;

            vector<LL> pref(period + 1, 0);

            LL cur = t0;

            for (LL i = 0; i < period; i++) {
                pref.at(i + 1) = pref.at(i) + (cur < b);
                cur += a;
                if (cur >= M) cur -= M;
            }

            LL full = n / period;
            LL rem = n % period;

            LL cntNeg = full * pref.at(period) + pref.at(rem);

            x += cntNeg * a;
            y -= (n - cntNeg) * b;
        }

        else if (a < 0 && b > 0) {

            LL k;

            if (S < 0) {
                k = 0;
            } else {
                k = S / b + 1;
                k = min<LL>(k, n);
            }

            y -= k * b;
            x += (n - k) * a;
        }

        else if (a > 0 && b < 0) {

            LL k;

            if (S >= 0) {
                k = 0;
            } else {
                k = (-S - 1) / a + 1;
                k = min<LL>(k, n);
            }

            x += k * a;
            y -= (n - k) * b;
        }

        else {

            if (S < 0) {
                x += n * a;
            } else {
                y -= n * b;
            }
        }

        cout << x << ' ' << y << '\n';
    }
}
0