結果
問題 | No.281 門松と魔法(1) |
ユーザー |
|
提出日時 | 2020-03-04 08:01:56 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 2 ms / 1,000 ms |
コード長 | 787 bytes |
コンパイル時間 | 659 ms |
コンパイル使用メモリ | 72,576 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-13 23:29:53 |
合計ジャッジ時間 | 2,150 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 57 |
コンパイルメッセージ
main.cpp:6:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type] 6 | main() | ^~~~
ソースコード
#include<iostream> #include<algorithm> #include<vector> using namespace std; long d,H[3]; main() { cin>>d>>H[0]>>H[1]>>H[2]; if(d==0) { bool ok=false; if(H[0]!=H[1]&&H[1]!=H[2]&&H[2]!=H[0])ok=true; if(ok) { if(H[0]<H[1]&&H[2]<H[1]||H[0]>H[1]&&H[2]>H[1]); else ok=false; } cout<<(ok?0:-1)<<endl; return 0; } vector<int>id={0,1,2}; long ans=-1; do{ if(id[1]==1)continue; long h[3]; h[id[0]]=H[0]; h[id[1]]=H[1]; h[id[2]]=H[2]; long now=0; for(int i=0;i<2;i++) { if(h[i]>h[i+1])continue; long t=h[i+1]-(h[i]-1); long x=(t+d-1)/d; h[i+1]-=x*d; now+=x; if(h[i+1]<0)h[i+1]=0; } if(h[0]>h[1]&&h[1]>h[2]) { if(ans<0)ans=now; else if(ans>now)ans=now; } }while(next_permutation(id.begin(),id.end())); cout<<ans<<endl; }