Submission #50536832


Source Code Expand

#include <bits/stdc++.h>
#include <atcoder/modint>

namespace {
    using ModInt [[maybe_unused]] = atcoder::modint998244353;
    using Num [[maybe_unused]] = long long int;
    using Vec [[maybe_unused]] = std::vector<Num>;
    using Set [[maybe_unused]] = std::set<Num>;
    using Mset [[maybe_unused]] = std::multiset<Num>;
    using Edges [[maybe_unused]] = std::vector<std::vector<Num>>;

    template<typename T>
    using Q [[maybe_unused]] = std::queue<T>;

    template<typename T>
    using PQ [[maybe_unused]] = std::priority_queue<T, std::vector<T>, std::greater<T>>;
}

void solve(std::istream& is, std::ostream& os) {
    Num n, k;
    is >> n >> k;

    Vec ns(n);
    for(auto&& a : ns) {
        is >> a;
    }

    const auto left_min = *std::min_element(ns.begin(), ns.begin() + k);
    const auto right_max = *std::max_element(ns.begin() + k, ns.end());
    if (left_min >= right_max) {
        os << "-1\n";
        return;
    }

    if (ns.at(k-1) < ns.at(k)) {
        os << "1\n";
        return;
    }

    std::vector<std::pair<Num, Num>> ordered;
    for(Num i{0}; i<k; ++i) {
        ordered.push_back(std::make_pair(ns.at(i), -i));
    }

    for(Num i{k}; i<n; ++i) {
        ordered.push_back(std::make_pair(ns.at(i), -i));
    }

    std::ranges::sort(ordered);

    Set nodes;
    constexpr Num Inf = 1000000000000000LL;
    Num ans = Inf;
    for(Num i{0}; i<n; ++i) {
        const auto& [val, nidx] = ordered.at(i);
        const auto idx = -nidx;
        if (idx < k) {
            nodes.insert(idx);
        } else if (!nodes.empty()) {
            ans = std::min(ans, idx - (*nodes.rbegin()));
        }
    }

    if (ans >= Inf) {
        os << "-1\n";
    } else {
        os << ans << "\n";
    }
}

int main(void) {
    solve(std::cin, std::cout);
    return 0;
}

Submission Info

Submission Time
Task A - Larger Score
User zettsut
Language C++ 20 (gcc 12.2)
Score 400
Code Size 1883 Byte
Status AC
Exec Time 306 ms
Memory 30944 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 36
Set Name Test Cases
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt, 01-027.txt, 01-028.txt, 01-029.txt, 01-030.txt, 01-031.txt, 01-032.txt, 01-033.txt
Case Name Status Exec Time Memory
00-sample-001.txt AC 1 ms 3492 KiB
00-sample-002.txt AC 1 ms 3508 KiB
00-sample-003.txt AC 2 ms 3552 KiB
01-001.txt AC 1 ms 3492 KiB
01-002.txt AC 11 ms 4080 KiB
01-003.txt AC 87 ms 5988 KiB
01-004.txt AC 87 ms 14344 KiB
01-005.txt AC 35 ms 4192 KiB
01-006.txt AC 14 ms 3660 KiB
01-007.txt AC 107 ms 16480 KiB
01-008.txt AC 89 ms 10848 KiB
01-009.txt AC 92 ms 14644 KiB
01-010.txt AC 73 ms 5476 KiB
01-011.txt AC 96 ms 6336 KiB
01-012.txt AC 96 ms 6360 KiB
01-013.txt AC 143 ms 17172 KiB
01-014.txt AC 96 ms 6268 KiB
01-015.txt AC 97 ms 6448 KiB
01-016.txt AC 306 ms 28924 KiB
01-017.txt AC 226 ms 22272 KiB
01-018.txt AC 96 ms 6260 KiB
01-019.txt AC 171 ms 19104 KiB
01-020.txt AC 196 ms 30944 KiB
01-021.txt AC 181 ms 27676 KiB
01-022.txt AC 182 ms 30308 KiB
01-023.txt AC 148 ms 16520 KiB
01-024.txt AC 96 ms 6392 KiB
01-025.txt AC 135 ms 14568 KiB
01-026.txt AC 96 ms 6352 KiB
01-027.txt AC 149 ms 22124 KiB
01-028.txt AC 148 ms 22012 KiB
01-029.txt AC 152 ms 21908 KiB
01-030.txt AC 148 ms 22016 KiB
01-031.txt AC 149 ms 22024 KiB
01-032.txt AC 148 ms 21908 KiB
01-033.txt AC 149 ms 21980 KiB