[백준 29736] 브실이와 친구가 되고 싶어 🤸♀️ (C#, C++) - soo:bak
작성일 :
문제 링크
설명
점수가 a 이상 b 이하인 친구 후보 중, 브실이의 점수 k와의 차이가 x 이하인 사람 수를 구하는 문제입니다.
조건을 만족하는 사람이 없으면 IMPOSSIBLE을 출력합니다.
접근법
친구가 될 수 있는 점수 범위는 k - x 이상 k + x 이하입니다.
이 범위와 a 이상 b 이하의 교집합 길이가 답입니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
class Program {
static void Main() {
var ab = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);
var kx = Array.ConvertAll(Console.ReadLine()!.Split(), int.Parse);
var a = ab[0];
var b = ab[1];
var k = kx[0];
var x = kx[1];
var lo = Math.Max(a, k - x);
var hi = Math.Min(b, k + x);
var cnt = hi - lo + 1;
if (cnt > 0) Console.WriteLine(cnt);
else Console.WriteLine("IMPOSSIBLE");
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int a, b, k, x; cin >> a >> b >> k >> x;
int lo = max(a, k - x);
int hi = min(b, k + x);
int cnt = hi - lo + 1;
if (cnt > 0) cout << cnt << "\n";
else cout << "IMPOSSIBLE\n";
return 0;
}