【AtCoder】ABC 447 A - Seats 2

A - Seats 2atcoder.jp favicon

実行時間制限: 2 sec / メモリ制限: 1024 MiB / Difficulty: 15 / NoviSteps: 7Q / 配点: 100 点

問題概要

NN 個の座席が横一列に並んでいて、各座席には最大で 11 人まで座ることができる。 隣り合う 22 つの席の両方に人が座らないように MM 人を座席に座らせることができるかどうか判定せよ。

制約

  • 1N,M1001 \le N, M \le 100
  • 入力される値は全て整数

考察

左から1つおきに座らせていくことを考えると、最大で N2\left\lceil \frac{N}{2} \right\rceil 人を座らせることができる。

したがって、 N2M\left\lceil \frac{N}{2} \right\rceil \geq M ならばYes、そうでなければNoと判定できる。

実装例

CPP
1.#include <bits/stdc++.h>
2.using namespace std;
3.
4.template <class T1, class T2>
5.inline auto div_ceil(T1 a, T2 b)
6.{
7. if (b < 0)
8. a *= -1, b *= -1;
9. if (a <= 0)
10. return a / b;
11. else
12. return (a - 1) / b + 1;
13.}
14.
15.// ======================================== //
16.
17.int main()
18.{
19. int N, M;
20. cin >> N >> M;
21.
22. if (div_ceil(N, 2) >= M)
23. cout << "Yes" << endl;
24. else
25. cout << "No" << endl;
26.
27. return 0;
28.}
atcoder.jp favicon

実装時間: 5 分以内

コメント

なんかこの問題を思い出した。

atcoder.jp favicon