結果
問題 | No.281 門松と魔法(1) |
ユーザー |
![]() |
提出日時 | 2015-09-20 05:48:34 |
言語 | C++11 (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,349 bytes |
コンパイル時間 | 1,325 ms |
コンパイル使用メモリ | 160,740 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-06 19:39:36 |
合計ジャッジ時間 | 2,818 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 54 WA * 3 |
ソースコード
#include <bits/stdc++.h> #define FOR(a,b) for(int a=0;a<b;a++) using namespace std; typedef long long ll; int main() { ll d; cin>>d; ll ar[3]; FOR(ctr1,3) cin>>ar[ctr1]; ll rez1=-1,rez2=-1; if(ar[1]>1) { ll l=0LL,r=0LL; ll d1=ar[0LL]-ar[1]+1; if(d1>0LL) { l+=ceil((double)d1/d); } ll d2=ar[2]-ar[1]+1; if(d2>0LL) { r+=ceil((double)d2/d); } if(max(ar[0LL]-l*d,0LL)==max(ar[2]-r*d,0LL)) { if(max(ar[0LL]-(l+1)*d,0LL)!=max(ar[2]-r*d,0LL)) l++; else { l=-1; } } if(l!=-1) rez1=l+r; } if(ar[0LL]>0LL && ar[2]>0LL) { ll l=0LL,m=0LL; ll dm=max(ar[1]-min(ar[0LL]-1,ar[2]-1),0LL); m=ceil((double)dm/d); if(ar[0LL]==ar[2]){ l++; if(max(ar[0LL]-l*d,0LL)==max(ar[1]-m*d,0LL)){ m++; if (max(ar[0LL]-l*d,0LL)==max(ar[1]-m*d,0LL)){ l=-1; } } } if(l!=-1) rez2=l+m; } if(rez1==-1) cout<<rez2<<endl; else if(rez2==-1) cout<<rez1<<endl; else cout<<min(rez1,rez2)<<endl; return 0; } /* 5 7 1 12349583 */