| 12975 | 2025-01-04 12:55:12 | Csongi | A lehető legkevesebb átszállás (50 pont) | cpp17 | Forditási hiba |
#include <iostream>
#include <vector>
#define ll long long
using namespace std;
pair<ll, ll> elerheto_csucs(ll v, const vector<vector<ll>>& allomasok, const vector<pair<ll, ll>>& vonatok)
{
ll legujabb = 0, index = 0;
for (ll i : allomasok[v])
{
if (vonatok[i].second > index)
{
legujabb = i;
index = vonatok[i].second;
}
}
return { legujabb, index };
}
ll main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll n, m;
cin >> n >> m;
vector<pair<ll, ll>> vonatok(n);
vector<vector<ll>> allomasok(m + 1);
bool elso = false, utolso = false;
for (ll i = 0; i < n; i++)
{
ll kezdo, veg;
cin >> kezdo >> veg;
if (i != 0 && vonatok[i-1].first == kezdo && vonatok[i-1].second > veg)
{
}
else
{
vonatok[i] = { kezdo, veg };
if (kezdo == 1)
elso = true;
if (veg == m)
utolso = true;
for (ll j = kezdo; j <= veg; j++)
{
allomasok[j].push_back(i);
}
}
}
if (!elso || !utolso)
{
cout << "-1";
}
else
{
ll jelenlegi = 1;
vector<ll> bejaras;
while (jelenlegi < m)
{
auto [legujabb, ujIndex] = elerheto_csucs(jelenlegi, allomasok, vonatok);
if (ujIndex <= jelenlegi) {
cout << "-1"; // vegtelen loop?
return 0;
}
jelenlegi = ujIndex;
bejaras.push_back(legujabb);
}
cout << bejaras.size() - 1 << '\n';
for (ll i : bejaras)
{
cout << i + 1 << ' ';
}
}
}open /var/local/lib/isolate/422/box/a.out: no such file or directory
cc1plus: error: '::main' must return 'int'