작성일 :

문제 링크

13222번 - Matches

설명

상자 바닥의 크기와 성냥 길이가 주어질 때, 각 성냥이 상자에 들어가는지 판정하는 문제입니다.


접근법

성냥은 상자 대각선 길이 이하이면 눕혀서 담을 수 있습니다.

대각선 길이의 제곱을 미리 계산해 둡니다.

각 성냥 길이의 제곱이 대각선 제곱 이하인지 비교하면 됩니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;

class Program {
  static void Main() {
    var line = Console.ReadLine()!.Split();
    var n = int.Parse(line[0]);
    var w = int.Parse(line[1]);
    var h = int.Parse(line[2]);
    var diag2 = w * w + h * h;

    for (var i = 0; i < n; i++) {
      var l = int.Parse(Console.ReadLine()!);
      Console.WriteLine(l * l <= diag2 ? "YES" : "NO");
    }
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n, w, h; cin >> n >> w >> h;
  int diag2 = w * w + h * h;
  for (int i = 0; i < n; i++) {
    int l; cin >> l;
    cout << (l * l <= diag2 ? "YES" : "NO") << "\n";
  }

  return 0;
}