[백준 13684] Divisão da Nlogõnia (C#, C++) - soo:bak
작성일 :
문제 링크
설명
기준점을 지나는 두 직선이 평면을 네 구역으로 나눌 때, 주어진 좌표가 어느 구역에 속하는지 판정하는 문제입니다.
선 위에 있으면 divisa, 그 외에는 NE, NO, SE, SO 중 하나를 출력합니다.
접근법
먼저 기준점과 쿼리 좌표를 입력받습니다.
좌표가 기준점보다 동쪽인지 서쪽인지, 북쪽인지 남쪽인지에 따라 해당 구역을 출력합니다.
만약 좌표가 기준점과 같은 행이나 열에 있으면 경계선 위이므로 divisa를 출력합니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
class Program {
static void Main() {
while (true) {
var line = Console.ReadLine();
if (line == null) break;
var k = int.Parse(line);
if (k == 0) break;
var pivot = Console.ReadLine()!.Split();
var n = int.Parse(pivot[0]);
var m = int.Parse(pivot[1]);
for (var i = 0; i < k; i++) {
var parts = Console.ReadLine()!.Split();
var x = int.Parse(parts[0]);
var y = int.Parse(parts[1]);
if (x == n || y == m) Console.WriteLine("divisa");
else if (x > n && y > m) Console.WriteLine("NE");
else if (x > n && y < m) Console.WriteLine("SE");
else if (x < n && y < m) Console.WriteLine("SO");
else Console.WriteLine("NO");
}
}
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int k;
while (cin >> k && k != 0) {
int n, m; cin >> n >> m;
for (int i = 0; i < k; i++) {
int x, y; cin >> x >> y;
if (x == n || y == m) cout << "divisa\n";
else if (x > n && y > m) cout << "NE\n";
else if (x > n && y < m) cout << "SE\n";
else if (x < n && y < m) cout << "SO\n";
else cout << "NO\n";
}
}
return 0;
}