結果
| 問題 | No.3559 +A,-B |
| コンテスト | |
| ユーザー |
komite_kyopro
|
| 提出日時 | 2026-07-06 03:23:39 |
| 言語 | C++23(gcc16) (gcc 16.1.0 + boost 1.90.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,973 bytes |
| 記録 | |
| コンパイル時間 | 2,259 ms |
| コンパイル使用メモリ | 355,284 KB |
| 実行使用メモリ | 9,284 KB |
| 最終ジャッジ日時 | 2026-07-06 03:23:47 |
| 合計ジャッジ時間 | 7,287 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| 部分点1 | 10 % | AC * 2 WA * 2 |
| 部分点2 | 60 % | AC * 7 |
| 部分点3 | 30 % | AC * 9 WA * 11 |
| 合計 | 60 点 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using ll=long long;
using Pl=pair<ll,ll>;
namespace rgs = std::ranges;
void solve() {
ll n,x,y,a,b;cin>>n>>x>>y>>a>>b;
if (x+y>=0) {
if (b<=0) {
y-=b*n;
cout<<x<<" "<<y<<"\n";
return;
}
ll cnt=(x+y+b)/b;
if (cnt>=n) {
y-=b*n;
cout<<x<<" "<<y<<"\n";
return;
}
y-=b*cnt;
n-=cnt;
}
else if (x+y<0) {
if (a<=0) {
x+=a*n;
cout<<x<<" "<<y<<"\n";
return;
}
ll cnt=(abs(x+y+a-1)/a);
if (cnt>=n) {
x+=a*n;
cout<<x<<" "<<y<<"\n";
return;
}
x+=a*cnt;
n-=cnt;
}
if (a<=0) {
x+=a*n;
cout<<x<<" "<<y<<"\n";
return;
}
if (b<=0) {
y-=b*n;
cout<<x<<" "<<y<<"\n";
return;
}
if (abs(a)>abs(b)) {
auto pr=[&](ll k) {
ll s=(x+y)+a*k-b*(n-k);
return s>=-b;
};
ll ok=n;
ll ng=-1;
while (ok-ng>1) {
ll cen=(ok+ng)/2;
if (pr(cen)) {
ok=cen;
}
else {
ng=cen;
}
}
x+=ok*a;
y-=b*(n-ok);
cout<<x<<" "<<y<<"\n";
return;
}
auto pr=[&](ll k) {
ll s=(x+y)+a*(n-k)-b*k;
return s<a;
};
ll ok=n;
ll ng=-1;
while (ok-ng>1) {
ll cen=(ok+ng)/2;
if (pr(cen)) {
ok=cen;
}
else {
ng=cen;
}
}
x+=(n-ok)*a;
y-=b*ok;
cout<<x<<" "<<y<<"\n";
return;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll t=1;
cin>>t;
while (t--) {
solve();
}
return 0;
}
komite_kyopro