結果
| 問題 | 
                            No.281 門松と魔法(1)
                             | 
                    
| コンテスト | |
| ユーザー | 
                             not_522
                         | 
                    
| 提出日時 | 2015-10-01 20:59:50 | 
| 言語 | C++11(廃止可能性あり)  (gcc 13.3.0)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 755 ms / 1,000 ms | 
| コード長 | 1,067 bytes | 
| コンパイル時間 | 1,292 ms | 
| コンパイル使用メモリ | 158,548 KB | 
| 実行使用メモリ | 6,820 KB | 
| 最終ジャッジ日時 | 2024-11-06 19:43:20 | 
| 合計ジャッジ時間 | 4,150 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 57 | 
ソースコード
#include <bits/stdc++.h>
using namespace std;
const int INF = numeric_limits<int>::max();
int d;
void magic(int& n) {
  n -= d;
  if (n < 0) n = 0;
}
bool isKadomatsu(int h1, int h2, int h3) {
  return h1 != h2 && h1 != h3 && h2 != h3 && ((h2 > h1 && h2 > h3) || (h2 < h1 && h2 < h3));
}
int solve1(int h1, int h2, int h3) {
  if (h2 == 0) return INF;
  int res = 0;
  while (h1 >= h2) {
    magic(h1);
    ++res;
  }
  while (h3 >= h2) {
    magic(h3);
    ++res;
  }
  if (h1 == h3) {
    magic(h1);
    ++res;
  }
  if (h1 == h3) return INF;
  return res;
}
int solve2(int h1, int h2, int h3) {
  int res = 0;
  if (h1 == h3) {
    magic(h1);
    ++res;
  }
  if (h1 == 0 || h3 == 0) return INF;
  while (min(h1, h3) <= h2) {
    magic(h2);
    ++res;
  }
  return res;
}
int main() {
  int h1, h2, h3;
  cin >> d >> h1 >> h2 >> h3;
  if (isKadomatsu(h1, h2, h3)) {
    cout << 0 << endl;
  } else if (d == 0) {
    cout << -1 << endl;
  } else {
    int res = min(solve1(h1, h2, h3), solve2(h1, h2, h3));
    cout << (res == INF ? -1 : res) << endl;
  }
}
            
            
            
        
            
not_522