226842026-01-15 15:45:43ProgramozoRokaA lehető legkevesebb átszállás (50 pont)cpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms508 KiB
2Elfogadva0/03ms508 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms500 KiB
7Elfogadva2/21ms500 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/22ms392 KiB
11Elfogadva2/22ms316 KiB
12Elfogadva2/22ms464 KiB
13Elfogadva2/21ms316 KiB
14Elfogadva2/21ms440 KiB
15Elfogadva2/22ms316 KiB
16Elfogadva2/22ms316 KiB
17Elfogadva2/22ms676 KiB
18Elfogadva2/23ms544 KiB
19Elfogadva2/23ms316 KiB
20Elfogadva2/23ms316 KiB
21Elfogadva2/23ms316 KiB
22Elfogadva2/23ms316 KiB
23Elfogadva2/23ms520 KiB
24Elfogadva2/23ms316 KiB
25Elfogadva2/23ms500 KiB
26Elfogadva2/23ms316 KiB
27Elfogadva2/23ms508 KiB
28Elfogadva2/23ms568 KiB