結果
問題 | No.281 門松と魔法(1) |
ユーザー |
![]() |
提出日時 | 2018-11-15 19:05:22 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,110 bytes |
コンパイル時間 | 2,031 ms |
コンパイル使用メモリ | 193,520 KB |
最終ジャッジ日時 | 2025-01-06 16:42:54 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 53 WA * 3 RE * 1 |
ソースコード
#include<bits/stdc++.h>using namespace std;using Int = long long;template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}//INSERT ABOVE HEREconst Int INF = 1e15;// a < b > cInt solve1(Int a,Int b,Int c,Int d){if(b<2) return INF;Int res=0;if(a>=b){Int x=(a-b)/d;a-=x*d;res+=x;if(a>=b) a-=d,res++;}if(c>=b){Int x=(c-b)/d;c-=x*d;res+=x;if(c>=b) c-=d,res++;}chmax(a,0);chmax(c,0);// a < b > cassert(a<b&&b>c);if(a==0&&c==0) return INF;if(a!=c) return res;return res+1;}// a > b < cInt solve2(Int a,Int b,Int c,Int d){if(max(a,c)<2||min(a,c)<=0) return INF;Int res=0;if(min(a,c)<=b){Int x=(b-min(a,c))/d;b-=x*d;res+=x;if(min(a,c)<=b) b-=d,res++;}chmax(b,0);assert(a>b&&b<c);// a > b < cif(a!=c) return res;return solve2(a-d,b,c,d)+res;}signed main(){Int d,a,b,c;cin>>d>>a>>b>>c;Int ans=min(solve1(a,b,c,d),solve2(a,b,c,d));if(ans>=INF) ans=-1;cout<<ans<<endl;return 0;}