5716 | 2023. 09. 09 19:48:30 | kukkerman | A lehető legkevesebb átszállás (50 pont) | cpp17 | Hibás válasz 46/50 | 9ms | 5416 KiB |
#include <iostream>
#include <vector>
void beolvas(std::istream &in, std::vector<std::pair<int, int>> &vonatok, int &allomasok) {
size_t n;
in >> n >> allomasok;
for (auto i = 0u; i < n; i++) {
int honnan, hova;
in >> honnan >> hova;
vonatok.emplace_back(honnan, hova);
}
}
void feldolgoz(const std::vector<std::pair<int, int>> &vonatok, int allomasok) {
const auto n = vonatok.size();
std::vector<int> csatlakozasok(allomasok + 1, -1);
for (auto i = 0u; i < n; i++) {
auto [honnan, hova] = vonatok[i];
if (csatlakozasok[honnan] == -1 || vonatok[csatlakozasok[honnan]].second < hova) {
csatlakozasok[honnan] = i;
}
}
int akt_vegallomas = 1;
int atsz_vonat = -1;
std::vector<int> atszallasok;
for (auto poz = 1; poz <= allomasok; poz++) {
if (poz > akt_vegallomas) {
if (atsz_vonat == -1 || vonatok[atsz_vonat].second <= poz) {
break;
}
akt_vegallomas = vonatok[atsz_vonat].second;
atszallasok.push_back(atsz_vonat);
}
if (csatlakozasok[poz] != -1 && (atsz_vonat == -1 || vonatok[atsz_vonat].second < vonatok[csatlakozasok[poz]].second)) {
atsz_vonat = csatlakozasok[poz];
}
}
if (akt_vegallomas == allomasok) {
std::cout << atszallasok.size() - 1 << std::endl;
for (auto v : atszallasok) {
std::cout << v + 1 << ' ';
}
std::cout << std::endl;
} else {
std::cout << "-1\n";
}
}
int main() {
std::vector<std::pair<int, int>> vonatok;
int allomasok;
beolvas(std::cin, vonatok, allomasok);
feldolgoz(vonatok, allomasok);
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 46/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1812 KiB | |||
2 | Elfogadva | 0/0 | 9ms | 3116 KiB | |||
3 | Elfogadva | 1/1 | 3ms | 2336 KiB | |||
4 | Elfogadva | 1/1 | 3ms | 2584 KiB | |||
5 | Elfogadva | 2/2 | 2ms | 2580 KiB | |||
6 | Hibás válasz | 0/2 | 3ms | 2756 KiB | |||
7 | Elfogadva | 2/2 | 3ms | 2916 KiB | |||
8 | Elfogadva | 2/2 | 3ms | 3064 KiB | |||
9 | Elfogadva | 2/2 | 4ms | 3288 KiB | |||
10 | Elfogadva | 2/2 | 4ms | 3552 KiB | |||
11 | Elfogadva | 2/2 | 4ms | 3844 KiB | |||
12 | Elfogadva | 2/2 | 6ms | 4164 KiB | |||
13 | Elfogadva | 2/2 | 3ms | 3940 KiB | |||
14 | Elfogadva | 2/2 | 4ms | 4036 KiB | |||
15 | Elfogadva | 2/2 | 4ms | 4292 KiB | |||
16 | Elfogadva | 2/2 | 6ms | 4600 KiB | |||
17 | Elfogadva | 2/2 | 8ms | 5028 KiB | |||
18 | Elfogadva | 2/2 | 8ms | 5004 KiB | |||
19 | Elfogadva | 2/2 | 8ms | 5236 KiB | |||
20 | Elfogadva | 2/2 | 8ms | 5236 KiB | |||
21 | Elfogadva | 2/2 | 8ms | 5236 KiB | |||
22 | Elfogadva | 2/2 | 9ms | 5256 KiB | |||
23 | Hibás válasz | 0/2 | 8ms | 5132 KiB | |||
24 | Elfogadva | 2/2 | 8ms | 5268 KiB | |||
25 | Elfogadva | 2/2 | 8ms | 5340 KiB | |||
26 | Elfogadva | 2/2 | 8ms | 5388 KiB | |||
27 | Elfogadva | 2/2 | 8ms | 5416 KiB | |||
28 | Elfogadva | 2/2 | 8ms | 5416 KiB |