백준/실버
[백준 5046번] 전국 대학생 프로그래밍 대회 동아리 연합 (C++)
게임개발기원
2023. 8. 1. 22:57
문제링크 : https://www.acmicpc.net/problem/5046
5046번: 전국 대학생 프로그래밍 대회 동아리 연합
첫째 줄에 참가자의 수 1 ≤ N ≤ 200, 예산 1 ≤ B ≤ 500000, 호텔의 수 1 ≤ H ≤ 18, 고를 수 있는 주의 개수 1 ≤ W ≤ 13이 주어진다. 다음 줄부터 각 호텔의 정보가 주어지며, 호텔의 정보는 두 줄로
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
int arr[19];
int result = MAX;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N, B, H, W;
cin >> N >> B >> H >> W;
for(int i=0; i<H; i++)
{
int p;
cin >>p;
for(int j=0; j<W; j++)
{
cin >> arr[i];
if(arr[i] < N) continue; //인원 확인
if(p*N > B) continue; //예산 확인
result = min(result, p * N); //최소 비용 저장
}
}
if(result==MAX) cout << "stay home";
else cout << result;
return 0;
}
단순한 구현 문제이다.
각 주의 인원이 총 인원보다 작은 지를 확인하고,
현재 비용에 따른 총비용이 예산을 넘는 지를 확인하고,
위에 2가지 조건을 무사히 통과하면 최소 비용을 저장한다.