[백준] 19580 마스크가 필요해💫

0

백준

목록 보기
268/271
post-thumbnail

틀린 풀이

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

typedef long long ll;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); 
	cout.tie(NULL);

	int N, M;
	cin >> N >> M;

	//범위 시작, 끝
	vector<pair<ll, ll>> buy;
	//마스크 가격,마스크 개수
	vector<pair<ll, int>> sell;

	for (int i = 0; i < N; ++i) {
		ll l, r;
		cin >> l >> r;
		buy.push_back({ l, r});
	}
	for (int i = 0; i < M; ++i) {
		ll p; int x;
		cin >> p >> x;
		sell.push_back({ p,x });
	}

	sort(buy.begin(), buy.end());
	sort(sell.begin(), sell.end());

	int answer = 0;
	while ((!buy.empty()) && (!sell.empty())) {
		ll l = buy.back().first;
		ll r = buy.back().second;
		ll p = sell.back().first;
		int& x = sell.back().second;

		//구매 가격 범위 시작보다 마스크 가격 작은 경우
		if (l > p) {
			buy.pop_back();
			continue;
		}
		//구매 가격 범위 끝보다 마스크 가격 큰 경우
		if (r < p) {
			sell.pop_back();
			continue;
		}

		//구매하는 경우
		answer++;
		buy.pop_back();
		x--;
		if (x == 0) {
			sell.pop_back();
		}	
	}
	cout << answer;
	return 0;
}

profile
Be able to be vulnerable, in search of truth

0개의 댓글