結果

問題 No.3559 +A,-B
コンテスト
ユーザー Salt
提出日時 2026-06-04 11:29:58
言語 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  
実行時間 -
コード長 2,075 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 6,645 ms
コンパイル使用メモリ 332,436 KB
実行使用メモリ 7,976 KB
最終ジャッジ日時 2026-06-04 11:30:16
合計ジャッジ時間 10,295 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_1
このコードへのチャレンジ
(要ログイン)
サブタスク 配点 結果
部分点1 10 % AC * 2 WA * 2
部分点2 60 % AC * 2 WA * 5
部分点3 30 % AC * 4 WA * 16
合計 0 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

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

using ll = long long;

void solve() {
    ll N,X,Y,A,B;
    cin >> N >> X >> Y >> A >> B;

    if (0<A) {
        if (0<B) {
            if (X+A*N+Y < 0) {
                cout << X+A*N << ' ' << Y << endl;
                return;
            }
            else if (X+Y-A*N >= 0) {
                cout << X << ' ' << Y-A*N << endl;
                return;
            }
            
            // else
            ll left=0, right=N;
            while(right-left>1) {
                ll mid = (left+right)/2;
                if (X+A*mid+Y-B*(N-mid) < -B) left=mid;
                else right=mid;
            }
            cout << X + A*right << ' ' << Y - B*(N-right) << endl;
        }
        else if (B==0) {
            if (X+Y >= 0) cout << X << ' ' << Y << endl;
            else cout << X-A*N << ' ' << Y << endl;
        }
        else {
            //(B<0)
            if (X+Y >= 0) cout << X << ' ' << Y-B*N << endl;
            else cout << X-A*N << ' ' << Y << endl;
        }
    }
    // else if (A==0) {
    //     if (X+Y < 0) {
    //         cout << X << ' ' << Y << endl;
    //         return;
    //     }

    //     // X+Y >= 0
    //     if (B>0) {
    //         ll k = (X+Y+B-1)/B;
    //         cout << X << ' ' << Y-B*k << endl;
    //     }
    //     else if (B==0) {
    //         cout << X << ' ' << Y << endl;
    //     }
    //     else {
    //         cout << X << ' ' << Y-B*N << endl;
    //     }
    // }
    else {
        //(A<0)
        if (X+Y < 0) {
            cout << X+A*N << ' ' << Y << endl;
            return;
        }

        // X+Y>=0
        if (0<B) {
            ll k = (X+Y+B-1)/B;
            cout << X+A*(N-k) << ' ' << Y-B*k << endl;
        }
        else if (B==0) {
            cout << X << ' ' << Y << endl;
        }
        else {
            //(B<0)
            cout << X << ' ' << Y-B*N << endl;
        }
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while (T--) {
        solve();
    }
}
0