結果
| 問題 | No.3559 +A,-B |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-05-31 17:49:24 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,375 bytes |
| 記録 | |
| コンパイル時間 | 2,107 ms |
| コンパイル使用メモリ | 331,544 KB |
| 実行使用メモリ | 6,400 KB |
| 最終ジャッジ日時 | 2026-05-31 17:49:45 |
| 合計ジャッジ時間 | 11,497 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge3_1 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 4 |
| 部分点2 | 60 % | AC * 7 |
| 部分点3 | 30 % | AC * 11 WA * 9 |
| 合計 | 70 点 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
int main(void){
int t;
cin>>t;
while(t--){
long long n,x,y,a,b;
cin>>n>>x>>y>>a>>b;
if(a>0&&b>0){
long long xpy=x+y,xmy=x-y,mn=0,mx=n;
while(0<mx-mn){
long long mid=(mx+mn)/2;
long long tmp=xpy+a*mid-b*(n-mid);
if(-b<=tmp&&tmp<a){
mn=mid,mx=mid;
}else if(tmp<-b){
mn=mid+1;
}else{
mx=mid-1;
}
}
if(mn<0)mn=0;
if(mn>n)mn=n;
xpy=xpy+a*mn-b*(n-mn);
xmy=xmy+a*mn+b*(n-mn);
cout<<(xpy+xmy)/2<<" "<<(xpy-xmy)/2<<endl;
}else if(a<=0&&x+y<0){
cout<<x+a*n<<" "<<y<<endl;
}else if(b<=0&&x+y>=0){
cout<<x<<" "<<y-b*n<<endl;
}else if(a>0){
if(x+a*n+y<0){
cout<<x+a*n<<" "<<y<<endl;
}else{
long long tmp=(abs(x+y)+a-1)/a;
cout<<x+a*tmp<<" "<<y-(n-tmp)*b<<endl;
}
}else{
if(x+y-b*n>=0){
cout<<x<<" "<<y-b*n<<endl;
}else{
long long tmp=(x+y+abs(b)-1)/abs(b);
cout<<x+a*(n-tmp)<<" "<<y-tmp*b<<endl;
}
}
}
return 0;
}