結果
問題 | No.2882 Comeback |
ユーザー | shobonvip |
提出日時 | 2024-09-20 01:46:31 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 48 ms / 2,000 ms |
コード長 | 1,526 bytes |
コンパイル時間 | 1,812 ms |
コンパイル使用メモリ | 200,444 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-20 01:46:35 |
合計ジャッジ時間 | 3,370 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
5,248 KB |
testcase_01 | AC | 1 ms
5,376 KB |
testcase_02 | AC | 2 ms
5,376 KB |
testcase_03 | AC | 2 ms
5,376 KB |
testcase_04 | AC | 2 ms
5,376 KB |
testcase_05 | AC | 3 ms
5,376 KB |
testcase_06 | AC | 3 ms
5,376 KB |
testcase_07 | AC | 3 ms
5,376 KB |
testcase_08 | AC | 4 ms
5,376 KB |
testcase_09 | AC | 3 ms
5,376 KB |
testcase_10 | AC | 38 ms
5,376 KB |
testcase_11 | AC | 34 ms
5,376 KB |
testcase_12 | AC | 40 ms
5,376 KB |
testcase_13 | AC | 44 ms
5,376 KB |
testcase_14 | AC | 34 ms
5,376 KB |
testcase_15 | AC | 41 ms
5,376 KB |
testcase_16 | AC | 35 ms
5,376 KB |
testcase_17 | AC | 36 ms
5,376 KB |
testcase_18 | AC | 48 ms
5,376 KB |
testcase_19 | AC | 38 ms
5,376 KB |
testcase_20 | AC | 44 ms
5,376 KB |
testcase_21 | AC | 41 ms
5,376 KB |
testcase_22 | AC | 43 ms
5,376 KB |
testcase_23 | AC | 44 ms
5,376 KB |
testcase_24 | AC | 38 ms
5,376 KB |
testcase_25 | AC | 2 ms
5,376 KB |
testcase_26 | AC | 2 ms
5,376 KB |
testcase_27 | AC | 2 ms
5,376 KB |
testcase_28 | AC | 2 ms
5,376 KB |
testcase_29 | AC | 1 ms
5,376 KB |
testcase_30 | AC | 6 ms
5,376 KB |
コンパイルメッセージ
main.cpp:6:12: warning: use of 'auto' in parameter declaration only available with '-std=c++20' or '-fconcepts' 6 | bool chmin(auto &a, auto b){ return a > b ? a = b, 1 : 0; } | ^~~~ main.cpp:6:21: warning: use of 'auto' in parameter declaration only available with '-std=c++20' or '-fconcepts' 6 | bool chmin(auto &a, auto b){ return a > b ? a = b, 1 : 0; } | ^~~~ main.cpp:7:12: warning: use of 'auto' in parameter declaration only available with '-std=c++20' or '-fconcepts' 7 | bool chmax(auto &a, auto b){ return a < b ? a = b, 1 : 0; } | ^~~~ main.cpp:7:21: warning: use of 'auto' in parameter declaration only available with '-std=c++20' or '-fconcepts' 7 | bool chmax(auto &a, auto b){ return a < b ? a = b, 1 : 0; } | ^~~~
ソースコード
#include<bits/stdc++.h> #define rep(i,s,n) for (int i = (int)(s); i < (int)(n); i++) #define all(v) begin(v),end(v) using namespace std; using ll = long long; bool chmin(auto &a, auto b){ return a > b ? a = b, 1 : 0; } bool chmax(auto &a, auto b){ return a < b ? a = b, 1 : 0; } void solve(){ ll a, b; cin >> a >> b; ll i = max(a, b); ll ans = 0; while (i > 0) { ll va = a / i; ll vb = b / i; ll ja = a / (va + 1); ll jb = b / (vb + 1); ll nxt = max(ja, jb); ll l = nxt+1; ll r = i+1; if (l + 1 == r) { ans += (a % l >= b % l); }else { assert (l + 2 <= r); ll base_a = a % l; ll base_b = b % l; ll sabun_a = a % (l+1) - a % l; ll sabun_b = b % (l+1) - b % l; ll last_a = a % (r-1); ll last_b = b % (r-1); if (base_a >= base_b && last_a >= last_b) { ans += r - l; }else if(base_a < base_b && last_a < last_b) { ans += 0; }else if(base_a < base_b && last_a >= last_b) { assert(sabun_a > sabun_b); ll p = (base_b - base_a + l * sabun_a - l * sabun_b + sabun_a - sabun_b - 1) / (sabun_a - sabun_b); assert(l < p && p < r); ans += r - p; }else{ assert(base_a >= base_b && last_a < last_b); assert(sabun_b > sabun_a); ll p = (base_a - base_b - l * sabun_a + l * sabun_b + 1 + sabun_b - sabun_a - 1) / (sabun_b - sabun_a); assert(l < p && p < r); ans += p - l; } } // [nxt+1, i+1) i = nxt; } cout << ans << '\n'; } int main(){ cin.tie(0)->sync_with_stdio(0); ll t; cin >> t; while(t--){ solve(); } }