728x90
반응형
long long
+
% 나머지 연산자
- 제목
운동회
- 조건
시간 제한 : 1 초
메모리 제한 : 512 MB
- 문제
단대소고(단국대학교부속소프트웨어고등학교)에서 운동회를 하고 있다. 운동회는 팀 대항 대회로 진행된다. 운동회에는 총 N팀이 참여하였으며, 각 팀은 M명의 인원으로 구성되어 있다. 운동회는 한 라운드가 끝날 때마다 남은 모든 인원 중 한 명이 임의로 탈락된다. 팀의 모든 인원이 탈락한다면 그 팀은 탈락하게 된다. 각 팀의 최종 등수는 팀이 탈락된 순서의 역순으로 정한다. 가장 늦게 탈락한 팀이 운동회의 최종 1등이 된다. 이렇게 운동회가 진행되어 남은 사람이 총 a명, 준혁이의 팀에서 남은 인원은 K명이 되었다. 이때, 준혁이는 자신의 팀이 지금 가질 수 있는 등수의 범위가 궁금해졌다.
준혁이의 팀이 지금 가질 수 있는 등수는 (준혁의 팀을 제외한 남아있는 팀의 수 + 1)과 같다.
N, M, a, K가 주어질 때 준혁이의 팀이 지금 가질 수 있는 등수의 최댓값과 최솟값을 구해보자.
- 입력
첫째 줄에 N, M, a, K가 공백으로 구분되어 입력된다. (1 ≤ N,M ≤ 10^9, 1 ≤ a ≤ N×M, 1≤ K ≤ M, K ≤ a)
- 출력
첫째 줄에 준혁이의 팀이 가질 수 있는 등수 중 가장 숫자가 큰 값과 가장 작은 값을 공백으로 구분하여 출력한다.
- 서브태스크
번호 | 배점 | 제한 |
1 | 3 | M = 1 |
2 | 97 | 추가 제약 조건 없음 |
예제 입력1 | 예제 출력1 |
30 5 51 3 | 30 11 |
#include <iostream>
#include <algorithm>
using namespace std;
#define endl '\n'
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
long long N, M, a, K;
long long max, min;
cin >> N >> M >> a >> K;
if(a - K >= N - 1){
max = N - 1 + 1;
if((a - K) % M == 0) min = (a - K) / M + 1;
else min = (a - K) / M + 1 + 1;
}
else{
max = a - K + 1;
if(a - K == 0) min = 1;
else if((a - K) % M == 0) min = (a - K) / M + 1;
else min = (a - K) / M + 1 + 1;
}
cout << max << ' ' << min << endl;
return 0;
}
728x90
반응형
'Problem Solving > BaekJoon' 카테고리의 다른 글
[BOJ/백준] 5639 - 이진 검색 트리 (0) | 2022.08.16 |
---|---|
[BOJ/백준] 25426 - 일차함수들 (0) | 2022.08.16 |
[BOJ/백준] 1041 - 주사위 (0) | 2022.08.15 |
[BOJ/백준] 10026 - 적록색약 (0) | 2022.08.15 |
[BOJ/백준] 10943 - 랜덤 게임~ (0) | 2022.08.15 |