238632026-01-31 10:06:27matemakaiÜgyeletcpp17Elfogadva 40/4012ms1332 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int m, n;
	cin >> m >> n;
	vector<tuple<int, int, int>> v(n);
	for (int i = 0; i < n; ++i) {
		int a, b;
		cin >> a >> b;
		v[i] = {a, b, i};
	}
	sort(v.begin(), v.end());
	multiset<tuple<int, int, int>> ms;
	multiset<int> ends;	
	vector<int> ans;
	bool possible = true;
	int v_idx = 0;
	int curr = 0;
	for (int i = 1; i <= m; ++i) {
		while (v_idx < v.size() && get<0>(v[v_idx]) <= i) {
			ms.insert({-get<1>(v[v_idx]), get<0>(v[v_idx]), get<2>(v[v_idx])});
			++v_idx;
		}
		while (!ends.empty() && *(ends.begin()) < i) {
			--curr;
			ends.erase(ends.begin());
		}
		while (curr < 2 && !ms.empty()) {
			auto [b, a, i] = *(ms.begin());
			b *= -1;
			ends.insert(b);
			++curr;
			ans.push_back(i);
			ms.erase(ms.begin());
		}
		if (curr < 2) {
			possible = false;
			break;
		}
	}
	if (!possible) {
		ans.clear();	
	}

	cout << ans.size() << endl;
	for (auto a : ans) {
		cout << a + 1 << " ";
	}
	cout << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/02ms316 KiB
2Elfogadva0/07ms820 KiB
3Elfogadva2/21ms512 KiB
4Elfogadva2/22ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms512 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/22ms316 KiB
9Elfogadva2/22ms316 KiB
10Elfogadva2/22ms476 KiB
11Elfogadva2/22ms412 KiB
12Elfogadva1/12ms332 KiB
13Elfogadva2/23ms404 KiB
14Elfogadva2/24ms564 KiB
15Elfogadva2/24ms564 KiB
16Elfogadva3/39ms820 KiB
17Elfogadva3/39ms820 KiB
18Elfogadva3/312ms1332 KiB
19Elfogadva3/312ms1076 KiB
20Elfogadva3/310ms1076 KiB