結果
問題 | No.281 門松と魔法(1) |
ユーザー |
![]() |
提出日時 | 2018-10-31 07:35:37 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,572 bytes |
コンパイル時間 | 1,668 ms |
コンパイル使用メモリ | 194,560 KB |
最終ジャッジ日時 | 2025-01-06 15:11:06 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 53 WA * 4 |
ソースコード
#include <bits/stdc++.h>using namespace std;using i64 = int64_t;using vi = vector<i64>;using vvi = vector<vi>;int solve(int d, int a, int b, int c) {if (a == c) {assert(a == 0 && c == 0);return -1;}if (a < b && b > c) {return 0;}if (a > b && b < c) {return 0;}if (d == 0 || b == 0) {return -1;}int ans = -1;int k = min(a, c);// lower bif (k != 0) {int diff = b - (k - 1);ans = (diff + d - 1) / d;}// lower a, ck = max(a, c);if (k != 0) {int diff = k - (b - 1);int t = (diff + d - 1) / d;// lower cif (a < c) {int cc = max(0, c - d * t);int aa = a;if (a == b) {if (a > 0) {aa = max(0, a - d);if (aa != cc) {ans = t + 1;} else if (aa > 0 || cc > 0) {ans = t + 2;}}} else {if (a == cc) {if (a > 0 || cc > 0) {ans = t + 1;}} else {ans = t;}}} else {int aa = max(0, a - d * t);int cc = c;if (c == b) {if (c > 0) {cc = max(0, c - d);if (aa != cc) {ans = t + 1;} else if (aa > 0 || cc > 0) {ans = t + 2;}}} else {if (aa == c) {if (aa > 0 || c > 0) {ans = t + 1;}} else {ans = t;}}}}return ans;}int main() {int d;int a, b, c;cin >> d >> a >> b >> c;if (a != c) {cout << solve(d, a, b, c) << endl;} else {if (d == 0) {cout << -1 << endl;return 0;}int ret1 = 1 + solve(d, max(0, a - d), b, c);int ret2 = 1 + solve(d, a, b, max(0, c - d));if (ret1 == 0 && ret2 == 0) {cout << -1 << endl;} else if (ret1 == 0) {cout << ret2 << endl;} else if (ret2 == 0) {cout << ret1 << endl;} else {cout << min(ret1, ret2) << endl;}}}