結果
| 問題 | No.3559 +A,-B |
| コンテスト | |
| ユーザー |
Salt
|
| 提出日時 | 2026-06-04 11:29:58 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,075 bytes |
| 記録 | |
| コンパイル時間 | 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 点 |
ソースコード
#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();
}
}
Salt