84872024-01-17 21:06:37kukkermanTűzijátékcpp17Accepted 50/5017ms10828 KiB
#include <iostream>
#include <vector>
#include <cstdint>

using Tavolsagok = std::vector<int>;

void beolvas(std::istream &be, int &s, int &t, Tavolsagok &telepulesek) {
    int n;
    be >> n >> s >> t;

    telepulesek.resize(n);
    for (auto &tt : telepulesek) {
        be >> tt;
    }
}

void feldolgoz(int s, int t, const Tavolsagok &telepulesek) {
    const auto n = static_cast<int>(telepulesek.size());
    const auto telephely_poz = telepulesek[s - 1];

    std::vector<int> tuzijatekok;

    auto vege = 0;
    for (auto i = 0; telepulesek[i] + t <= telephely_poz; i++) {
        if (vege <= telepulesek[i]) {
            tuzijatekok.push_back(i + 1);
            vege = telepulesek[i] + t;
        }
    }

    tuzijatekok.push_back(s);

    vege = telephely_poz + t;
    for (auto i = s; i < n; i++) {
        if (vege <= telepulesek[i]) {
            tuzijatekok.push_back(i + 1);
            vege = telepulesek[i] + t;
        }
    }

    using std::cout;

    cout << tuzijatekok.size() << '\n';
    for (auto tindex : tuzijatekok) {
        cout << tindex << ' ';
    }
    cout << '\n';
}

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);

    int s;
    int t;
    Tavolsagok telepulesek;
    beolvas(std::cin, s, t, telepulesek);

    feldolgoz(s, t, telepulesek);

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms1824 KiB
2Accepted0/017ms3948 KiB
3Accepted2/23ms3136 KiB
4Accepted2/23ms3312 KiB
5Accepted2/23ms3528 KiB
6Accepted2/23ms3696 KiB
7Accepted2/23ms3908 KiB
8Accepted2/23ms4128 KiB
9Accepted2/23ms4508 KiB
10Accepted2/24ms4788 KiB
11Accepted2/24ms4968 KiB
12Accepted2/24ms5056 KiB
13Accepted2/24ms5436 KiB
14Accepted2/24ms5688 KiB
15Accepted3/34ms5672 KiB
16Accepted3/37ms6236 KiB
17Accepted3/38ms6552 KiB
18Accepted3/38ms7212 KiB
19Accepted3/317ms8632 KiB
20Accepted3/317ms9364 KiB
21Accepted4/417ms10188 KiB
22Accepted4/416ms10828 KiB