提出 #71513651


ソースコード 拡げる

#include <bits/stdc++.h>

typedef long long valueType;
typedef std::vector<valueType> ValueVector;
typedef std::vector<ValueVector> ValueMatrix;
typedef std::vector<ValueMatrix> ValueCube;
typedef std::string string;
typedef std::vector<string> StringVector;
typedef std::vector<bool> bitset;
typedef std::vector<bitset> BitMatrix;
typedef std::pair<valueType, valueType> ValuePair;
typedef std::vector<ValuePair> PairVector;
typedef std::vector<PairVector> PairMatrix;
typedef std::tuple<valueType, valueType, valueType> ValueTuple;
typedef std::vector<ValueTuple> TupleVector;
typedef std::vector<TupleVector> TupleMatrix;
typedef std::set<valueType> ValueSet;
typedef std::stack<valueType> ValueStack;

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

    valueType N;

    std::cin >> N;

    ValueVector P(N + 1);

    for (valueType i = 1; i <= N; ++i)
        std::cin >> P[i];

    ValueVector LeftSon(N + 1, 0), RightSon(N + 1, 0);

    // 建立笛卡尔书 利用单调栈
    ValueVector stack(N + 1, 0);

    for (valueType i = 1, top = 0; i <= N; ++i) {
        valueType k = top;

        while (k > 0 && P[stack[k]] < P[i])
            --k;

        if (k > 0)
            RightSon[stack[k]] = i;

        if (k < top)
            LeftSon[i] = stack[k + 1];

        stack[++k] = i;
        top = k;
    }

    PairMatrix Tree(N + 1);

    for (valueType i = 1; i <= N; ++i) {
        if (LeftSon[i])
            Tree[i].emplace_back(LeftSon[i], std::abs(i - LeftSon[i]));

        if (RightSon[i])
            Tree[i].emplace_back(RightSon[i], std::abs(i - RightSon[i]));
    }

    auto Dfs = [&](auto &self, valueType const x) -> valueType {
        valueType ans = 0;

        for (auto const &[v, w] : Tree[x])
            ans = std::max(ans, self(self, v) + w);

        return ans;
    };

    valueType root = 1;

    for (valueType i = 1; i <= N; ++i) {
        if (P[i] > P[root])
            root = i;
    }

    std::cout << Dfs(Dfs, root) << std::endl;

    return 0;
}

提出情報

提出日時
問題 F - Cat exercise
ユーザ UserUnauthorized
言語 C++23 (Clang 21.1.0)
得点 550
コード長 2139 Byte
結果 AC
実行時間 79 ms
メモリ 29492 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 550 / 550
結果
AC × 2
AC × 40
セット名 テストケース
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, hand_00.txt, hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, hand_05.txt, hand_06.txt, hand_07.txt, random_00.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, random_22.txt, random_23.txt, random_24.txt, random_25.txt, random_26.txt, random_27.txt, random_28.txt, random_29.txt
ケース名 結果 実行時間 メモリ
example_00.txt AC 1 ms 2880 KiB
example_01.txt AC 1 ms 2728 KiB
hand_00.txt AC 77 ms 29352 KiB
hand_01.txt AC 77 ms 29492 KiB
hand_02.txt AC 74 ms 24764 KiB
hand_03.txt AC 76 ms 28424 KiB
hand_04.txt AC 73 ms 23176 KiB
hand_05.txt AC 1 ms 2880 KiB
hand_06.txt AC 1 ms 2776 KiB
hand_07.txt AC 73 ms 18320 KiB
random_00.txt AC 77 ms 18972 KiB
random_01.txt AC 77 ms 18904 KiB
random_02.txt AC 77 ms 18992 KiB
random_03.txt AC 79 ms 18792 KiB
random_04.txt AC 77 ms 19000 KiB
random_05.txt AC 78 ms 18816 KiB
random_06.txt AC 77 ms 18952 KiB
random_07.txt AC 77 ms 18904 KiB
random_08.txt AC 77 ms 18832 KiB
random_09.txt AC 77 ms 18972 KiB
random_10.txt AC 76 ms 22812 KiB
random_11.txt AC 77 ms 21904 KiB
random_12.txt AC 76 ms 19492 KiB
random_13.txt AC 77 ms 21128 KiB
random_14.txt AC 75 ms 26032 KiB
random_15.txt AC 76 ms 19016 KiB
random_16.txt AC 76 ms 19376 KiB
random_17.txt AC 76 ms 20672 KiB
random_18.txt AC 77 ms 19800 KiB
random_19.txt AC 78 ms 20348 KiB
random_20.txt AC 76 ms 20132 KiB
random_21.txt AC 74 ms 20900 KiB
random_22.txt AC 76 ms 19468 KiB
random_23.txt AC 76 ms 20680 KiB
random_24.txt AC 77 ms 19656 KiB
random_25.txt AC 78 ms 21464 KiB
random_26.txt AC 77 ms 19120 KiB
random_27.txt AC 77 ms 20404 KiB
random_28.txt AC 76 ms 19616 KiB
random_29.txt AC 76 ms 19216 KiB