#include <iostream>
#include <queue>
using namespace std;
#define IAMFAST ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int n,m;
//가장 많이 담겨있는 선물상자부터 가져가기 위해 우선순위 큐 사용
priority_queue<int> c;
int w[100001];
bool ans = true;//모두 가져간다면 true
void INPUT()
{
IAMFAST
cin >> n >> m;
for(int i = 0; i < n; i++)
{
int gift; cin >> gift;
c.push(gift);
}
for(int i = 0; i < m; i++) cin >> w[i];
}
void SOLVE()
{
for(int i = 0; i < m; i++)
{
int top = c.top();//선물이 가장 많이 담겨있는 상자 안의 갯수
//i번 아이가 받을 수 있다면, 가져간만큼 뺀 후 다시 pq에 삽입
if(top >= w[i]) c.pop() , c.push(top-w[i]);
else
{
ans = false;
break;
}
}
cout << ans;
}
int main()
{
INPUT();
SOLVE();
}
GOLD5 미만 난이도는 알고리즘 및 풀이 설명을 주석으로 대체합니다.
주석을 참고해주세요.