226842026-01-15 15:45:43ProgramozoRokaA lehető legkevesebb átszállás (50 pont)cpp17Accepted 50/503ms676 KiB
#include <iostream>
#include <vector>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	int n, m;
	cin >> n >> m;
	vector<int>a(n+1);
	vector<int>b(n+1);
	for (int i = 1; i <= n; ++i)
	{
		cin >> a[i] >> b[i];
	}
	if (a[1] > 1)
	{
		cout << -1;
		return 0;
	}
	vector<int>optimal;
	int mostani_vege=1;
	int i = 1;

	while (mostani_vege < m)
	{
		int legjobb_vonat_index = -1;
		int legmesszebb = mostani_vege;
		while (i <= n and a[i] <= mostani_vege) 
		{
			if (b[i] > legmesszebb) {
				legmesszebb = b[i];
				legjobb_vonat_index = i;
			}
			i++;
		}

		// Ha nem találtunk olyan vonatot, ami továbbvinne
		if (legjobb_vonat_index == -1) 
		{
			cout << -1 << endl;
			return 0;
		}

		optimal.push_back(legjobb_vonat_index);
		mostani_vege = legmesszebb;
	}
	cout << optimal.size() - 1 << endl;
	for (int i = 0; i < optimal.size(); i++) cout << optimal[i] << " ";
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms508 KiB
2Accepted0/03ms508 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms500 KiB
7Accepted2/21ms500 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/22ms392 KiB
11Accepted2/22ms316 KiB
12Accepted2/22ms464 KiB
13Accepted2/21ms316 KiB
14Accepted2/21ms440 KiB
15Accepted2/22ms316 KiB
16Accepted2/22ms316 KiB
17Accepted2/22ms676 KiB
18Accepted2/23ms544 KiB
19Accepted2/23ms316 KiB
20Accepted2/23ms316 KiB
21Accepted2/23ms316 KiB
22Accepted2/23ms316 KiB
23Accepted2/23ms520 KiB
24Accepted2/23ms316 KiB
25Accepted2/23ms500 KiB
26Accepted2/23ms316 KiB
27Accepted2/23ms508 KiB
28Accepted2/23ms568 KiB