알고리즘/백준
BOJ16938 캠프준비 / C++
내이름은 킹햄찌
2022. 3. 13. 00:27
https://www.acmicpc.net/problem/16938
16938번: 캠프 준비
난이도가 10, 30인 문제를 고르거나, 20, 30인 문제를 고르면 된다.
www.acmicpc.net
백준 온라인저지 16938번 캠프준비 문제입니다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n, l, r, x;
vector<int> arr;
void Input() {
cin >> n >> l >> r >> x;
int sum;
for (int i = 0; i < n; i++) {
cin >> sum;
arr.push_back(sum);
}
}
void solution() {
int cnt = 0;
sort(arr.begin(), arr.end());
for (int i = 1; i < (1 << n); i++) {
int total = 0;
vector<int> p;
for (int j = 0; j < n; j++) {
if (i&(1 << j))
p.push_back(arr[j]);
}
if (p.size() < 2) continue;
if (p[p.size()-1] - p[0] < x) continue;
for (auto iter : p)
total += iter;
if (total >= l && total <= r)
cnt++;
}
cout << cnt;
}
int main(void) {
Input();
solution();
}
아이디어
비트마스킹을 이용하여 모든 경우의수를 확인 할 수 있고, 조건에 유의하여 풀이