結果
問題 | No.281 門松と魔法(1) |
ユーザー |
![]() |
提出日時 | 2023-01-16 05:02:49 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 1,000 ms |
コード長 | 1,225 bytes |
コンパイル時間 | 983 ms |
コンパイル使用メモリ | 107,756 KB |
最終ジャッジ日時 | 2025-02-10 03:40:26 |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 57 |
ソースコード
#include <iostream>#include <vector>#include <cmath>#include <map>#include <set>#include <iomanip>#include <queue>#include <algorithm>#include <numeric>#include <deque>#include <complex>#include <cassert>using namespace std;int main(){int mi=2e9+100, cnt, d, s, use;vector<int> a(3), b;cin >> d;for (int i=0; i<3; i++) cin >> a[i];if (d == 0){if (a[0] != a[2] && a[0] < a[1] && a[1] > a[2]) cout << 0 << endl;else if (a[0] != a[2] && a[0] > a[1] && a[1] < a[2]) cout << 0 << endl;else cout << -1 << endl;return 0;}b=a; cnt=0;if (b[0] == b[2]){cnt=1;b[0] = max(0, b[0]-d);}s = min(b[0], b[2]);use = max(0, (b[1]-s+1+d-1)/d);b[1] = max(0, b[1]-use*d);cnt += use;if (b[0] != b[1] && b[1] != b[2]) mi = min(mi, cnt);b=a; cnt=0;use = max(0, (b[0]-b[1]+1+d-1)/d);b[0] = max(0, b[0]-use*d);cnt += use;use = max(0, (b[2]-b[1]+1+d-1)/d);b[2] = max(0, b[2]-use*d);cnt += use;if (b[0] == b[2]){cnt++;b[0] = max(0, b[0]-d);}if (b[0] != b[2]) mi = min(mi, cnt);cout << (mi == 2e9+100 ? -1 : mi) << endl;return 0;}