AtCoder Language Update – Nov. 2024
C++23 [proposal]
GCC: 15.1.0
Clang: 20.1.3
Library
Official
- AC Library:
1.6
- The official, original library provided by AtCoder.
- inherited
Utility
- Range-v3:
0.12.0
- A predecessor for some features that may be implemented in future C++.
- proposed at 2024/11/11 23:46
- 「いずれ利用できるようになるので,先取りしておくことに否定的である必要はない」
- 「いずれ C++ 標準入りするなら,早期から使えるようにしたところで長期的には特に問題ない」
- unordered_dense:
4.5.0
- A densely stored hashmap (and hashset) based on robin-hood hashing and backward shift deletion.
- proposed at 2024/11/10 07:24
- 「機能面を見るに,C++ 標準 (GNU 拡張含む) や Boost で十分に思える.性能面で優れているところが動機だと思うが,それで外部ライブラリの導入を進めると際限なく広がってしまうので,やはり反対」
Advanced STL-like
- Abseil:
20250127.1
- A set of libraries developed by Google to argument C++ Standard Library.
- proposed at 2024/11/10 08:28
- 「機能面を見るに,C++ 標準 (GNU 拡張含む) や Boost で十分に思える.性能面で優れているところが動機だと思うが,それで外部ライブラリの導入を進めると際限なく広がってしまうので,やはり反対」
- Boost:
1.88.0
- A set of portable, versatile libraries that work well with C++ Standard Library.
- inherited
Mathematical
- Eigen:
3.4.0-4
(apt)- A C++ template library for linear algebra.
- inherited
- 「機能面を見るに,C++ 標準 (GNU 拡張含む) や Boost で十分に思える.性能面で優れているところが動機だと思うが,それで外部ライブラリの導入を進めると際限なく広がってしまうので,やはり反対」
- GMP:
2:6.3.0+dfsg-2ubuntu6.1
(apt)- The GNU Multiple Precision Arithmetic Library
- inherited
Machine learning
- LibTorch:
2.7.0
- A C++ bindings for PyTorch.
- proposed at 2024/11/10 08:28
- 「過去問は機械学習が本番一位を取った回があり (中略) 普通に使えるチャンスがあるのかも」
- LightGBM:
4.5.0
- A gradient boosting framework that uses tree based learning algorithms.
- inherited (as a proposal)
Comments
- 「AtCoder は今後 Heuristic 系コンテストにも力を入れていくようなので,それに対応して導入するのはアリじゃないか」
- 「現状提案されてるのは大体もう Python から使えることを考えると大きな影響はないのでは」
Solver
- OR-Tools:
9.12
- A portable software designed by Google to solve combinatorial optimization problems.
- inherited (as a proposal)
- Z3:
4.15.0
- A theorem prover designed by Microsoft Research to solve satisfiability modulo theories (SMT).
- inherited (as a proposal)
Comments
Compile flags
Some other flags might be appended, depending on libraries that is to be installed; see also compile script, which appears below.
Basic
-std=gnu++23
Environment variable
-DONLINE_JUDGE
-DATCODER
Warning
-Wall
-Wextra
Optimization
-O2
-O3
(not yet implemented)- proposed at 2024/11/19 10:52
- 「Topcoder で採用例がある」
-march=native
-flto=auto
-ftrivial-auto-var-init=zero
- trivial な未初期化変数が 0 で初期化されるようになります.
Comments
Limit-relaxing
-fconstexpr-depth=1024
-fconstexpr-loop-limit=524288
-fconstexpr-ops-limit=67108864
- Each value specified is double the default.
- inherited
- 「(設定値が大きい場合) 困る例がある」
- 「コンパイル時間が長くなりサーバーが重くなる原因になるので,制限をきつくしてもいい」
- 「コンパイル時計算は遅いとのことで,デフォルトの上限を緩和するのはトラブルの元」
- 備考: かつては設定できる最大値 (
4294967295
) が指定されていた.
Extra features
-lstdc++exp
(GCC),-fexperimental-library
(Clang)- enables experimental library features
- proposed at 2024/11/10 16:36
- 「競プロ (特に Algo) とはほぼ関係ない (導入しても大きな問題はない) のでは」
- 「標準ライブラリにあるのであれば有効にしてもいいのでは」
- 「Codeforces で採用例がある」
- 「
<stacktrace>
ないし<experimental/filesystem>
を include しない限り等しいバイナリを吐くはず」
-fopenmp
Comments
- 「オプションが導入されたときに環境が本当に改善されるのか慎重に考えてほしい」
-
「言語のオプションのレギュレーションが必要かどうかは AtCoder 社が考えることであり,先回り忖度して自粛する必要はない」
- 「他のコンテストサイトの環境とかけ離れるのには大きく反対」
- 「アルゴリズムコンテストの目的を考えると,なんでもかんでも高速に・便利にすればよいというものではない」
-
「(強力なライブラリやオプションについて) もし悪影響が目立ち始めたら,GPT 同様にその時考えるというスタイルでいいのでは」
- 「あくまで C++ 標準の上での勝負だと思っているので,外部ライブラリには基本反対」
GCC
Install Script
#!/bin/bash
########## AUTO-GENERATED ##########
# Do not modify this file manually #
####################################
# shellcheck disable=all
PARALLEL="$(($(nproc) + 2))"
AC_VARIANT=gcc
INTERNALL_BUILD_FLAGS=(
"-std=gnu++23"
"-w"
"-L::install_dir::/lib64"
"-Wl,-R::install_dir::/lib64"
)
PRECOMPILE_BUILD_FLAGS=(
"-DATCODER"
"-DONLINE_JUDGE"
"-O2"
"-Wall"
"-Wextra"
"-fconstexpr-depth=1024"
"-fconstexpr-loop-limit=524288"
"-fconstexpr-ops-limit=2097152"
"-flto=auto"
"-fmodules"
"-ftrivial-auto-var-init=zero"
"-march=native"
"-pthread"
"-std=gnu++23"
"-Wl,--as-needed"
"-L::install_dir::/lib64"
"-Wl,-R::install_dir::/lib64"
)
set -eu
ARGUMENTS=("$0")
while (($# > 0)); do
case "$1" in
--variant)
AC_VARIANT="$2"
shift
;;
--install-prefix)
AC_INSTALL_PREFIX="$2"
shift
;;
--install-dir)
AC_INSTALL_DIR="$2"
shift
;;
--temp-dir)
AC_TEMP_DIR="$2"
shift
;;
-h | --help | ?)
echo "{--option} / {ENVIRONMENT} [default] (info)"
echo "--variant / AC_VARIANT [gcc]"
echo "--install-prefix / AC_INSTALL_PREFIX [/opt/atcoder] (ignored iif --install-dir is given)"
echo "--install-dir / AC_INSTALL_DIR [\${install-prefix}/\${variant}']"
echo "--temp-dir / AC_TEMP_DIR [/temp/atcoder/\${variant}]"
exit 0
;;
-*)
echo "$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1"
exit 1
;;
*)
ARGUMENTS=("${ARGUMENTS[@]}" "$1")
;;
esac
shift
done
if [[ ! -v AC_VARIANT ]]; then
export AC_VARIANT="gcc"
fi
if [[ ! -v AC_INSTALL_PREFIX ]]; then
export AC_INSTALL_PREFIX="/opt/atcoder"
fi
if [[ ! -v AC_TEMP_DIR ]]; then
export AC_TEMP_DIR="/tmp/atcoder/${AC_VARIANT}"
fi
if [[ ! -v AC_INSTALL_DIR ]]; then
export AC_INSTALL_DIR="${AC_INSTALL_PREFIX}/${AC_VARIANT}"
fi
sudo mkdir -p /etc/atcoder/
echo "${AC_INSTALL_DIR}" | sudo tee /etc/atcoder/install_dir.txt
# shellcheck disable=SC2016
INTERNALL_BUILD_FLAGS=("${INTERNALL_BUILD_FLAGS[@]/'::install_dir::'/${AC_INSTALL_DIR}}")
PRECOMPILE_BUILD_FLAGS=("${PRECOMPILE_BUILD_FLAGS[@]/'::install_dir::'/${AC_INSTALL_DIR}}")
sudo mkdir -p "${AC_TEMP_DIR}" "${AC_INSTALL_DIR}/include" "${AC_INSTALL_DIR}/lib"
echo "::group::tools"
sudo apt-get install -y git cmake lld ninja-build pigz pbzip2
echo "::endgroup::"
### Configure
CMAKE_ENVIRONMENT=(
-G "Ninja"
-DLINK_FLAGS:STRING="-fuse-ld=lld"
-DCFLAGS:STRING="-w"
-DCXXFLAGS:STRING="-w"
-DCMAKE_INSTALL_MESSAGE:STRING=NEVER
)
if ccache -v; then
echo "ccache enabled"
export CCACHE_ENABLED=1
CMAKE_ENVIRONMENT+=(
-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache
-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
)
fi
export CMAKE_ENVIRONMENT
### Compiler
if [[ "${AC_VARIANT}" == "gcc" ]]; then
# gcc
(
VERSION="15.1.0"
set -eu
if "${AC_NO_BUILD_COMPILER:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::GCC"
sudo mkdir -p ./gcc
sudo wget -q "http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-${VERSION}/gcc-${VERSION}.tar.gz" -O ./gcc.tar.gz
sudo tar -I pigz -xf ./gcc.tar.gz -C ./gcc --strip-components 1
cd ./gcc
sudo ./contrib/download_prerequisites
CC=gcc
CXX=g++
if [[ -v CCACHE_ENABLED ]]; then
CC="ccache ${CC}"
CXX="ccache ${CXX}"
fi
sudo mkdir -p build && cd build
sudo ../configure CC="${CC}" CXX="${CXX}" \
--prefix="${AC_INSTALL_DIR}" \
--enable-languages=c++ \
--disable-bootstrap \
--disable-multilib \
--disable-libsanitizer \
--disable-checking \
--disable-nls \
--disable-gcov \
--disable-libada \
--disable-libgm2
sudo make -j"${PARALLEL}" >/dev/null
sudo make install
sudo ln -sf "${AC_INSTALL_DIR}/bin/gcc" /usr/local/bin/gcc
sudo ln -sf "${AC_INSTALL_DIR}/bin/g++" /usr/local/bin/g++
echo "::endgroup::"
)
CC="gcc"
CXX="g++"
else
# clang
(
VERSION="20.1.3"
set -eu
if "${AC_NO_BUILD_COMPILER:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::Clang"
sudo mkdir -p ./llvm-project
sudo wget -q "https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/llvm-project-${VERSION}.src.tar.xz" -O ./llvm-project.tar.xz
sudo xz -dk -T0 ./llvm-project.tar.xz && sudo rm -rf ./llvm-project.tar.xz
sudo tar -xf ./llvm-project.tar -C ./llvm-project --strip-components 1 && sudo rm -rf ./llvm-project.tar
cd ./llvm-project
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DLLVM_ENABLE_PROJECTS:STRING="clang;lld" \
-DLLVM_ENABLE_RUNTIMES:STRING="libcxx;libcxxabi;compiler-rt;libunwind;openmp" \
-DLLVM_TARGETS_TO_BUILD="X86" \
-DLLVM_USE_LINKER:STRING=lld \
-DLLVM_INCLUDE_TESTS:BOOL=OFF \
-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \
-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \
-DLLVM_ENABLE_PEDANTIC:BOOL=OFF \
-DLLVM_ENABLE_WARNINGS:BOOL=OFF \
-DLIBCXX_CXX_ABI:STRING="libcxxabi" \
-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
../llvm
sudo cmake --build .
sudo cmake --build . --target install
sudo ln -sf "${AC_INSTALL_DIR}/bin/clang" /usr/local/bin/clang
sudo ln -sf "${AC_INSTALL_DIR}/bin/clang++" /usr/local/bin/clang++
sudo ln -sf "${AC_INSTALL_DIR}/bin/lld" /usr/local/bin/lld
echo "::endgroup::"
)
{ # generate 'slack' bits/stdc++.h
sudo mkdir -p "${AC_INSTALL_DIR}/include/bits"
find "${AC_INSTALL_DIR}/include/c++/v1" -maxdepth 1 -type f ! -iname '__**' ! -iname '**.**' -exec echo '#include <{}>' \; |
sudo tee "${AC_INSTALL_DIR}/include/bits/stdc++.h"
}
CC="clang"
CXX="clang++"
fi
sudo chmod +x -R "${AC_INSTALL_DIR}"
"${CXX}" --version
"${CXX}" -print-search-dirs
CMAKE_ENVIRONMENT+=(
-DCMAKE_C_COMPILER:STRING="${CC}"
-DCMAKE_CXX_COMPILER:STRING="${CXX}"
)
if [[ -v CCACHE_ENABLED ]]; then
BOOST_BUILDER_CONFIG="using ${AC_VARIANT} : : ccache ${CXX} ;"
else
BOOST_BUILDER_CONFIG="using ${AC_VARIANT} : : ${CXX} ;"
fi
export CMAKE_ENVIRONMENT
export BOOST_BUILDER_CONFIG
### Libraries
# abseil
(
VERSION="20250512.1"
set -eu
if [[ "${AC_NO_BUILD_abseil:-false}" == true && "${AC_NO_BUILD_or_tools:-false}" == true ]]; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::abseil"
sudo mkdir -p ./abseil
sudo wget -q "https://github.com/abseil/abseil-cpp/releases/download/${VERSION}/abseil-cpp-${VERSION}.tar.gz" -O ./abseil.tar.gz
sudo tar -I pigz -xf ./abseil.tar.gz -C ./abseil --strip-components 1
cd ./abseil
sudo mkdir -p ./build && cd ./build
CMAKE_ARGUMENTS=(
"${CMAKE_ENVIRONMENT[@]}"
-DABSL_ENABLE_INSTALL:BOOL=ON
-DABSL_PROPAGATE_CXX_STD:BOOL=ON
-DABSL_USE_SYSTEM_INCLUDES:BOOL=ON
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}"
-DCMAKE_CXX_FLAGS:STRING="-fPIC ${INTERNALL_BUILD_FLAGS[*]}"
)
if [[ -v AC_RUN_TEST ]] && [[ "${AC_RUN_TEST}" = "true" ]]; then
sudo cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON "${CMAKE_ARGUMENTS[@]}" ..
sudo make "-j${PARALLEL}"
sudo ctest --parallel "${PARALLEL}"
else
sudo cmake "${CMAKE_ARGUMENTS[@]}" ..
fi
sudo cmake --build . --target install
echo "::endgroup::"
)
# ac-library
(
VERSION="1.6"
set -eu
if "${AC_NO_BUILD_ac_library:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::AC Library"
sudo mkdir -p ./ac-library
sudo wget -q "https://github.com/atcoder/ac-library/archive/refs/tags/v${VERSION}.tar.gz" -O ./ac-library.tar.gz
sudo tar -I pigz -xf ./ac-library.tar.gz -C ./ac-library --strip-components 1
sudo cp -rf ./ac-library/atcoder "${AC_INSTALL_DIR}/include"
echo "::endgroup::"
)
# boost
(
VERSION="1.88.0"
set -eu
if "${AC_NO_BUILD_boost:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::boost"
sudo mkdir -p ./boost
sudo wget -q "https://archives.boost.io/release/${VERSION}/source/boost_${VERSION//./_}.tar.bz2" -O ./boost.tar.bz2
sudo tar -I pbzip2 -xf ./boost.tar.bz2 -C ./boost --strip-components 1
cd ./boost
if [[ -v BOOST_BUILDER_CONFIG ]]; then
echo "${BOOST_BUILDER_CONFIG}" | sudo tee -a ./user-config.jam
else
sudo touch ./user-config.jam
fi
if [[ -v CCACHE_ENABLED ]]; then
sudo sed -i \
-e 's/test_compiler g++$TOOLSET_SUFFIX/test_compiler "ccache g++$TOOLSET_SUFFIX"/g' \
-e 's/test_compiler clang++$TOOLSET_SUFFIX/test_compiler "ccache clang++$TOOLSET_SUFFIX"/g' \
./tools/build/src/engine/build.sh
fi
if [[ "${AC_VARIANT}" == "clang" ]]; then
BOOST_BUILD_FLAGS=("${INTERNALL_BUILD_FLAGS[@]}" "--target=x86_64-unknown-linux-gnu")
fi
sudo ./bootstrap.sh \
--with-toolset="${AC_VARIANT}" \
--without-libraries=mpi,graph_parallel,python \
--prefix="${AC_INSTALL_DIR}"
sudo ./b2 \
toolset="${AC_VARIANT}" \
link=static \
threading=single \
variant=release \
cflags="-w" \
cxxflags="${BOOST_BUILD_FLAGS[*]}" \
--user-config="./user-config.jam" \
-j"${PARALLEL}" -d0 \
install
echo "::endgroup::"
)
# eigen
(
VERSION="3.4.0-4"
set -xeu
if [[ "${AC_NO_BUILD_eigen:-false}" == true && \
"${AC_NO_BUILD_light_gbm:-false}" == true && \
"${AC_NO_BUILD_or_tools:-false}" == true ]]; then
exit 0
fi
echo "::group::Eigen3"
sudo apt-get install -y "libeigen3-dev=${VERSION}"
sudo mkdir -p "${AC_INSTALL_DIR}/cmake"
sudo cp -Trf /usr/include/eigen3 "${AC_INSTALL_DIR}/include"
# copy and patch cmake files to build OR-Tools.
sudo cp -f \
/usr/share/eigen3/cmake/Eigen3Targets.cmake \
/usr/share/eigen3/cmake/Eigen3Config.cmake \
"${AC_INSTALL_DIR}/cmake"
CMAKE_PATH="${AC_INSTALL_DIR}/include"
CMAKE_PATH="${CMAKE_PATH//'/opt/'/}"
sudo sed -i \
-e "s/include\/eigen3/${CMAKE_PATH//'/'/'\/'}/g" \
"${AC_INSTALL_DIR}/cmake/Eigen3Targets.cmake"
sudo apt-get remove -y libeigen3-dev
echo "::endgroup::"
)
# gmp
(
VERSION="2:6.3.0+dfsg-2ubuntu6.1"
set -eu
if "${AC_NO_BUILD_gmp:-false}"; then exit 0; fi
echo "::group::gmp"
sudo apt-get install -y "libgmp3-dev=${VERSION}"
echo "::endgroup::"
)
# immer
(
VERSION="0.8.1"
set -eu
if "${AC_NO_BUILD_immer:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::immer"
sudo mkdir -p ./immer
sudo wget -q "https://github.com/arximboldi/immer/archive/refs/tags/v${VERSION}.tar.gz" -O ./immer.tar.gz
sudo tar -I pigz -xf ./immer.tar.gz -C ./immer --strip-components 1
cd ./immer
sudo cp -Trf ./immer "${AC_INSTALL_DIR}/include/immer"
echo "::endgroup::"
)
# libtorch
(
VERSION="2.7.1"
set -eu
if [[ "${AC_NO_BUILD_libtorch:-false}" == true || "${AC_VARIANT:-}" == "clang" ]]; then
exit 0
fi
cd "${AC_TEMP_DIR}"
echo "::group::LibTorch"
sudo wget "https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-${VERSION}%2Bcpu.zip" -O ./libtorch.zip
sudo unzip -o ./libtorch.zip -d .
# remove protobuf, which or-tools has as its dependencies.
sudo rm -f ./libtorch/lib/libprotobuf.a
sudo rm -f ./libtorch/lib/libprotobuf-lite.a
sudo rm -f ./libtorch/lib/libprotoc.a
sudo cp -Trf ./libtorch/include "${AC_INSTALL_DIR}/include"
sudo cp -Trf ./libtorch/lib "${AC_INSTALL_DIR}/lib"
echo "::endgroup::"
)
# light-gbm
(
VERSION="4.6.0"
set -eu
if [[ "${AC_NO_BUILD_light_gbm:-false}" == true ]]; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::LightGBM"
if [ -d ./light-gbm/ ]; then sudo rm -rf ./light-gbm/; fi
sudo mkdir -p ./light-gbm
sudo wget -q "https://github.com/microsoft/LightGBM/releases/download/v${VERSION}/lightgbm-${VERSION}.tar.gz" -O ./light-gbm.tar.gz
sudo tar -I pigz -xf ./light-gbm.tar.gz -C ./light-gbm/ --strip-components 1
cd ./light-gbm
sudo rm -rf ./lightgbm
sudo rm -rf ./external_libs/eigen
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DBUILD_CLI:BOOL=OFF \
-DBUILD_STATIC_LIB=ON \
-DUSE_HOMEBREW_FALLBACK=OFF \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
-DCMAKE_CXX_FLAGS:STRING="${INTERNALL_BUILD_FLAGS[*]} -I${AC_INSTALL_DIR}/include -fopenmp" \
..
sudo cmake --build . --target install
echo "::endgroup::"
)
# or-tools
(
VERSION="9.14"
set -eu
if "${AC_NO_BUILD_or_tools:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::OR-Tools"
sudo mkdir -p ./or-tools
sudo wget -q "https://github.com/google/or-tools/archive/refs/tags/v${VERSION}.tar.gz" -O ./or-tools.tar.gz
sudo tar -I pigz -xf ./or-tools.tar.gz -C ./or-tools --strip-components 1
cd ./or-tools
BUILD_TESTING=OFF
if [[ -v AC_RUN_TEST ]] && [[ "${AC_RUN_TEST}" = "true" ]]; then
BUILD_TESTING=ON
fi
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DBUILD_CXX:BOOL=ON \
-DBUILD_BZip2:BOOL=ON -DBUILD_ZLIB:BOOL=ON -DBUILD_Protobuf:BOOL=ON -DBUILD_re2:BOOL=ON \
-DUSE_COINOR:BOOL=ON -DBUILD_CoinUtils:BOOL=ON -DBUILD_Osi:BOOL=ON -DBUILD_Clp:BOOL=ON -DBUILD_Cgl:BOOL=ON -DBUILD_Cbc:BOOL=ON \
-DUSE_GLPK:BOOL=ON -DBUILD_GLPK:BOOL=ON \
-DUSE_HIGHS:BOOL=ON -DBUILD_HIGHS:BOOL=ON \
-DUSE_SCIP:BOOL=ON -DBUILD_SCIP:BOOL=ON -DBUILD_soplex:BOOL=ON -DBUILD_Boost:BOOL=ON \
-DBUILD_SAMPLES:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF \
-DBUILD_TESTING:BOOL="${BUILD_TESTING}" \
-DCMAKE_PREFIX_PATH:PATH="${AC_INSTALL_DIR}" \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \
-DCMAKE_CXX_FLAGS:STRING="${INTERNALL_BUILD_FLAGS[*]}" \
..
sudo cmake --build . --config Release --target install
if [[ -v AC_RUN_TEST ]] && [[ "${AC_RUN_TEST}" = "true" ]]; then
sudo cmake --build . --config Release --target test --parallel "${PARALLEL}"
fi
echo "::endgroup::"
)
# range-v3
(
VERSION="0.12.0"
set -eu
if "${AC_NO_BUILD_range_v3:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::range-v3"
sudo mkdir -p ./range-v3
sudo wget -q "https://github.com/ericniebler/range-v3/archive/refs/tags/${VERSION}.tar.gz" -O ./range-v3.tar.gz
sudo tar -I pigz -xf ./range-v3.tar.gz -C ./range-v3 --strip-components 1
sudo cp -Trf ./range-v3/include "${AC_INSTALL_DIR}/include"
echo "::endgroup::"
)
# unordered_dense
(
VERSION="4.5.0"
set -eu
if "${AC_NO_BUILD_unordered_dense:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::unordered_dense"
sudo mkdir -p ./unordered_dense
sudo wget "https://github.com/martinus/unordered_dense/archive/refs/tags/v${VERSION}.tar.gz" -O ./unordered_dense.tar.gz
sudo tar -I pigz -xf ./unordered_dense.tar.gz -C ./unordered_dense --strip-components 1
cd ./unordered_dense
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
..
sudo cmake --build . --target install
echo "::endgroup::"
)
# z3
(
VERSION="4.15.0"
set -eu
if "${AC_NO_BUILD_z3:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::Z3"
sudo mkdir -p ./z3
sudo wget -q "https://github.com/Z3Prover/z3/archive/refs/tags/z3-${VERSION}.tar.gz" -O ./z3.tar.gz
sudo tar -I pigz -xf ./z3.tar.gz -C ./z3 --strip-components 1
cd ./z3
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
-DCMAKE_CXX_FLAGS:STRING="${INTERNALL_BUILD_FLAGS[*]}" \
..
sudo cmake --build . --target install
echo "::endgroup::"
)
if ! ${AC_NO_GENERATE_CACHES:-false}; then
echo ::group::generate caches
if [[ "${AC_VARIANT}" == "gcc" ]]; then
# Generate caches of std and std.compat modules.
"${CXX}" bits/std.cc bits/std.compat.cc "${PRECOMPILE_BUILD_FLAGS[@]}" -c -fmodule-only -fsearch-include-path
else
"${CXX}" "${AC_INSTALL_DIR}/share/libc++/v1/std.cppm" -o std.pcm -Wno-reserved-module-identifier --precompile "${PRECOMPILE_BUILD_FLAGS[@]}"
"${CXX}" "${AC_INSTALL_DIR}/share/libc++/v1/std.compat.cppm" -o std.compat.pcm -Wno-reserved-module-identifier --precompile "${PRECOMPILE_BUILD_FLAGS[@]}"
fi
echo "::endgroup::"
fi
if [ -v ATCODER ]; then
echo "::group::finalize"
find "${AC_INSTALL_DIR}" \
-name cmake -or -name pkgconfig \
-type d -print0 |
xargs -0 sudo rm -rf
sudo apt-get purge -y --auto-remove git cmake lld ninja-build pigz pbzip2
echo "::endgroup::"
fi
Compile Script
#!/bin/bash
########## AUTO-GENERATED ##########
# Do not modify this file manually #
####################################
AC_VARIANT=gcc
USER_BUILD_FLAGS=(
"-DATCODER"
"-DNOMINMAX"
"-DONLINE_JUDGE"
"-DOR_PROTO_DLL="
"-DPROTOBUF_USE_DLLS"
"-DUSE_BOP"
"-DUSE_CBC"
"-DUSE_CLP"
"-DUSE_GLOP"
"-DUSE_LP_PARSER"
"-DUSE_MATH_OPT"
"-DUSE_PDLP"
"-DUSE_SCIP"
"-I::install_dir::/include"
"-I::install_dir::/include/torch/csrc/api/include"
"-O2"
"-Wall"
"-Wextra"
"-fconstexpr-depth=1024"
"-fconstexpr-loop-limit=524288"
"-fconstexpr-ops-limit=2097152"
"-flto=auto"
"-fmodules"
"-ftrivial-auto-var-init=zero"
"-march=native"
"-pthread"
"-std=gnu++23"
"-Wl,--as-needed"
"-L::install_dir::/lib64"
"-Wl,-R::install_dir::/lib64"
"-L::install_dir::/lib"
"-Wl,-R::install_dir::/lib"
"-fopenmp"
"-lstdc++exp"
"-labsl_cordz_sample_token"
"-labsl_failure_signal_handler"
"-labsl_flags_parse"
"-labsl_flags_usage"
"-labsl_flags_usage_internal"
"-labsl_log_flags"
"-labsl_periodic_sampler"
"-labsl_poison"
"-labsl_random_internal_distribution_test_util"
"-labsl_scoped_set_env"
"-lboost_atomic"
"-lboost_charconv"
"-lboost_chrono"
"-lboost_container"
"-lboost_context"
"-lboost_contract"
"-lboost_coroutine"
"-lboost_date_time"
"-lboost_exception"
"-lboost_fiber"
"-lboost_filesystem"
"-lboost_graph"
"-lboost_iostreams"
"-lboost_json"
"-lboost_locale"
"-lboost_log"
"-lboost_log_setup"
"-lboost_math_c99"
"-lboost_math_c99f"
"-lboost_math_c99l"
"-lboost_math_tr1"
"-lboost_math_tr1f"
"-lboost_math_tr1l"
"-lboost_nowide"
"-lboost_prg_exec_monitor"
"-lboost_process"
"-lboost_program_options"
"-lboost_random"
"-lboost_regex"
"-lboost_serialization"
"-lboost_stacktrace_from_exception"
"-lboost_system"
"-lboost_test_exec_monitor"
"-lboost_thread"
"-lboost_timer"
"-lboost_type_erasure"
"-lboost_unit_test_framework"
"-lboost_url"
"-lboost_wave"
"-lboost_wserialization"
"-lgmpxx"
"-lgmp"
"-lortools"
"-lCbc"
"-lCbcSolver"
"-lCgl"
"-lClp"
"-lClpSolver"
"-lCoinUtils"
"-lGLPK"
"-lOsi"
"-lOsiCbc"
"-lOsiClp"
"-lhighs"
"-lscip"
"-lz"
"-lbz2"
"-lprotobuf"
"-labsl_die_if_null"
"-labsl_log_initialize"
"-labsl_random_distributions"
"-labsl_random_seed_sequences"
"-labsl_random_internal_entropy_pool"
"-labsl_random_internal_randen"
"-labsl_random_internal_randen_hwaes"
"-labsl_random_internal_randen_hwaes_impl"
"-labsl_random_internal_randen_slow"
"-labsl_random_internal_platform"
"-labsl_random_internal_seed_material"
"-labsl_random_seed_gen_exception"
"-labsl_statusor"
"-labsl_status"
"-lutf8_validity"
"-lutf8_range"
"-pthread"
"-lre2"
"-labsl_log_internal_check_op"
"-labsl_leak_check"
"-labsl_log_internal_conditions"
"-labsl_log_internal_message"
"-labsl_examine_stack"
"-labsl_log_internal_format"
"-labsl_log_internal_nullguard"
"-labsl_log_internal_structured_proto"
"-labsl_log_internal_proto"
"-labsl_log_internal_log_sink_set"
"-labsl_log_internal_globals"
"-labsl_log_globals"
"-labsl_log_sink"
"-labsl_strerror"
"-labsl_vlog_config_internal"
"-labsl_log_internal_fnmatch"
"-labsl_flags_internal"
"-labsl_flags_marshalling"
"-labsl_flags_reflection"
"-labsl_flags_private_handle_accessor"
"-labsl_flags_commandlineflag"
"-labsl_flags_commandlineflag_internal"
"-labsl_flags_config"
"-labsl_flags_program_name"
"-labsl_raw_hash_set"
"-labsl_cord"
"-labsl_cordz_info"
"-labsl_cord_internal"
"-labsl_cordz_functions"
"-labsl_cordz_handle"
"-labsl_crc_cord_state"
"-labsl_crc32c"
"-labsl_crc_internal"
"-labsl_crc_cpu_detect"
"-labsl_hashtablez_sampler"
"-labsl_exponential_biased"
"-labsl_hash"
"-labsl_city"
"-labsl_low_level_hash"
"-labsl_str_format_internal"
"-labsl_synchronization"
"-labsl_graphcycles_internal"
"-labsl_kernel_timeout_internal"
"-labsl_stacktrace"
"-labsl_symbolize"
"-labsl_debugging_internal"
"-labsl_demangle_internal"
"-labsl_demangle_rust"
"-labsl_decode_rust_punycode"
"-labsl_utf8_for_code_point"
"-labsl_malloc_internal"
"-labsl_time"
"-labsl_civil_time"
"-labsl_strings"
"-labsl_strings_internal"
"-labsl_string_view"
"-labsl_int128"
"-labsl_throw_delegate"
"-labsl_time_zone"
"-labsl_tracing_internal"
"-labsl_base"
"-lrt"
"-labsl_raw_logging_internal"
"-labsl_log_severity"
"-labsl_spinlock_wait"
"-lz3"
"-l_lightgbm"
"-ltorch"
"-ltorch_cpu"
"-lc10"
)
set -eu
ARGUMENTS=("$0")
while (($# > 0)); do
case "$1" in
--variant)
AC_VARIANT="$2"
shift
;;
-h | --help | ?)
echo "{--option} / {ENVIRONMENT} [default]"
echo "--variant / AC_VARIANT [gcc]"
exit 0
;;
-*)
echo "$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1"
exit 1
;;
*)
ARGUMENTS=("${ARGUMENTS[@]}" "$1")
;;
esac
shift
done
if [[ -z "${AC_VARIANT}" ]]; then
export AC_VARIANT="gcc"
fi
INSTALL_DIR="$(cat /etc/atcoder/install_dir.txt)"
# shellcheck disable=SC2016
USER_BUILD_FLAGS=("${USER_BUILD_FLAGS[@]//'::install_dir::'/${INSTALL_DIR}}")
if [[ "${AC_VARIANT}" = "gcc" ]]; then
g++ ./Main.cpp -o a.out "${USER_BUILD_FLAGS[@]}"
else
clang++ std.pcm std.compat.pcm ./Main.cpp -o a.out "${USER_BUILD_FLAGS[@]}"
fi
Configuration
########## AUTO-GENERATED ##########
# Do not modify this file manually #
####################################
compile = "AC_VARIANT=gcc\nUSER_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DNOMINMAX\"\n\"-DONLINE_JUDGE\"\n\"-DOR_PROTO_DLL=\"\n\"-DPROTOBUF_USE_DLLS\"\n\"-DUSE_BOP\"\n\"-DUSE_CBC\"\n\"-DUSE_CLP\"\n\"-DUSE_GLOP\"\n\"-DUSE_LP_PARSER\"\n\"-DUSE_MATH_OPT\"\n\"-DUSE_PDLP\"\n\"-DUSE_SCIP\"\n\"-I::install_dir::/include\"\n\"-I::install_dir::/include/torch/csrc/api/include\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\"\n\"-L::install_dir::/lib\"\n\"-Wl,-R::install_dir::/lib\"\n\"-fopenmp\"\n\"-lstdc++exp\"\n\"-labsl_cordz_sample_token\"\n\"-labsl_failure_signal_handler\"\n\"-labsl_flags_parse\"\n\"-labsl_flags_usage\"\n\"-labsl_flags_usage_internal\"\n\"-labsl_log_flags\"\n\"-labsl_periodic_sampler\"\n\"-labsl_poison\"\n\"-labsl_random_internal_distribution_test_util\"\n\"-labsl_scoped_set_env\"\n\"-lboost_atomic\"\n\"-lboost_charconv\"\n\"-lboost_chrono\"\n\"-lboost_container\"\n\"-lboost_context\"\n\"-lboost_contract\"\n\"-lboost_coroutine\"\n\"-lboost_date_time\"\n\"-lboost_exception\"\n\"-lboost_fiber\"\n\"-lboost_filesystem\"\n\"-lboost_graph\"\n\"-lboost_iostreams\"\n\"-lboost_json\"\n\"-lboost_locale\"\n\"-lboost_log\"\n\"-lboost_log_setup\"\n\"-lboost_math_c99\"\n\"-lboost_math_c99f\"\n\"-lboost_math_c99l\"\n\"-lboost_math_tr1\"\n\"-lboost_math_tr1f\"\n\"-lboost_math_tr1l\"\n\"-lboost_nowide\"\n\"-lboost_prg_exec_monitor\"\n\"-lboost_process\"\n\"-lboost_program_options\"\n\"-lboost_random\"\n\"-lboost_regex\"\n\"-lboost_serialization\"\n\"-lboost_stacktrace_from_exception\"\n\"-lboost_system\"\n\"-lboost_test_exec_monitor\"\n\"-lboost_thread\"\n\"-lboost_timer\"\n\"-lboost_type_erasure\"\n\"-lboost_unit_test_framework\"\n\"-lboost_url\"\n\"-lboost_wave\"\n\"-lboost_wserialization\"\n\"-lgmpxx\"\n\"-lgmp\"\n\"-lortools\"\n\"-lCbc\"\n\"-lCbcSolver\"\n\"-lCgl\"\n\"-lClp\"\n\"-lClpSolver\"\n\"-lCoinUtils\"\n\"-lGLPK\"\n\"-lOsi\"\n\"-lOsiCbc\"\n\"-lOsiClp\"\n\"-lhighs\"\n\"-lscip\"\n\"-lz\"\n\"-lbz2\"\n\"-lprotobuf\"\n\"-labsl_die_if_null\"\n\"-labsl_log_initialize\"\n\"-labsl_random_distributions\"\n\"-labsl_random_seed_sequences\"\n\"-labsl_random_internal_entropy_pool\"\n\"-labsl_random_internal_randen\"\n\"-labsl_random_internal_randen_hwaes\"\n\"-labsl_random_internal_randen_hwaes_impl\"\n\"-labsl_random_internal_randen_slow\"\n\"-labsl_random_internal_platform\"\n\"-labsl_random_internal_seed_material\"\n\"-labsl_random_seed_gen_exception\"\n\"-labsl_statusor\"\n\"-labsl_status\"\n\"-lutf8_validity\"\n\"-lutf8_range\"\n\"-pthread\"\n\"-lre2\"\n\"-labsl_log_internal_check_op\"\n\"-labsl_leak_check\"\n\"-labsl_log_internal_conditions\"\n\"-labsl_log_internal_message\"\n\"-labsl_examine_stack\"\n\"-labsl_log_internal_format\"\n\"-labsl_log_internal_nullguard\"\n\"-labsl_log_internal_structured_proto\"\n\"-labsl_log_internal_proto\"\n\"-labsl_log_internal_log_sink_set\"\n\"-labsl_log_internal_globals\"\n\"-labsl_log_globals\"\n\"-labsl_log_sink\"\n\"-labsl_strerror\"\n\"-labsl_vlog_config_internal\"\n\"-labsl_log_internal_fnmatch\"\n\"-labsl_flags_internal\"\n\"-labsl_flags_marshalling\"\n\"-labsl_flags_reflection\"\n\"-labsl_flags_private_handle_accessor\"\n\"-labsl_flags_commandlineflag\"\n\"-labsl_flags_commandlineflag_internal\"\n\"-labsl_flags_config\"\n\"-labsl_flags_program_name\"\n\"-labsl_raw_hash_set\"\n\"-labsl_cord\"\n\"-labsl_cordz_info\"\n\"-labsl_cord_internal\"\n\"-labsl_cordz_functions\"\n\"-labsl_cordz_handle\"\n\"-labsl_crc_cord_state\"\n\"-labsl_crc32c\"\n\"-labsl_crc_internal\"\n\"-labsl_crc_cpu_detect\"\n\"-labsl_hashtablez_sampler\"\n\"-labsl_exponential_biased\"\n\"-labsl_hash\"\n\"-labsl_city\"\n\"-labsl_low_level_hash\"\n\"-labsl_str_format_internal\"\n\"-labsl_synchronization\"\n\"-labsl_graphcycles_internal\"\n\"-labsl_kernel_timeout_internal\"\n\"-labsl_stacktrace\"\n\"-labsl_symbolize\"\n\"-labsl_debugging_internal\"\n\"-labsl_demangle_internal\"\n\"-labsl_demangle_rust\"\n\"-labsl_decode_rust_punycode\"\n\"-labsl_utf8_for_code_point\"\n\"-labsl_malloc_internal\"\n\"-labsl_time\"\n\"-labsl_civil_time\"\n\"-labsl_strings\"\n\"-labsl_strings_internal\"\n\"-labsl_string_view\"\n\"-labsl_int128\"\n\"-labsl_throw_delegate\"\n\"-labsl_time_zone\"\n\"-labsl_tracing_internal\"\n\"-labsl_base\"\n\"-lrt\"\n\"-labsl_raw_logging_internal\"\n\"-labsl_log_severity\"\n\"-labsl_spinlock_wait\"\n\"-lz3\"\n\"-l_lightgbm\"\n\"-ltorch\"\n\"-ltorch_cpu\"\n\"-lc10\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default]\"\necho \"--variant / AC_VARIANT [gcc]\"\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ -z $AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nINSTALL_DIR=\"$(cat /etc/atcoder/install_dir.txt)\"\nUSER_BUILD_FLAGS=(\"${USER_BUILD_FLAGS[@]//'::install_dir::'/$INSTALL_DIR}\")\nif [[ $AC_VARIANT == \"gcc\" ]];then\ng++ ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nelse\nclang++ std.pcm std.compat.pcm ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nfi"
display = 'C++23 (GCC 15.1.0)'
execution = ['./a.out']
filename = 'Main.cpp'
install = "PARALLEL=\"$(($(nproc)+2))\"\nAC_VARIANT=gcc\nINTERNALL_BUILD_FLAGS=(\n\"-std=gnu++23\"\n\"-w\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nPRECOMPILE_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DONLINE_JUDGE\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-loop-limit=524288\"\n\"-fconstexpr-ops-limit=2097152\"\n\"-flto=auto\"\n\"-fmodules\"\n\"-ftrivial-auto-var-init=zero\"\n\"-march=native\"\n\"-pthread\"\n\"-std=gnu++23\"\n\"-Wl,--as-needed\"\n\"-L::install_dir::/lib64\"\n\"-Wl,-R::install_dir::/lib64\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n--install-prefix)AC_INSTALL_PREFIX=\"$2\"\nshift\n;;\n--install-dir)AC_INSTALL_DIR=\"$2\"\nshift\n;;\n--temp-dir)AC_TEMP_DIR=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default] (info)\"\necho \"--variant / AC_VARIANT [gcc]\"\necho \"--install-prefix / AC_INSTALL_PREFIX [/opt/atcoder] (ignored iif --install-dir is given)\"\necho \"--install-dir / AC_INSTALL_DIR [\\${install-prefix}/\\${variant}']\"\necho '--temp-dir / AC_TEMP_DIR [/temp/atcoder/${variant}]'\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ ! -v AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nif [[ ! -v AC_INSTALL_PREFIX ]];then\nexport AC_INSTALL_PREFIX=\"/opt/atcoder\"\nfi\nif [[ ! -v AC_TEMP_DIR ]];then\nexport AC_TEMP_DIR=\"/tmp/atcoder/$AC_VARIANT\"\nfi\nif [[ ! -v AC_INSTALL_DIR ]];then\nexport AC_INSTALL_DIR=\"$AC_INSTALL_PREFIX/$AC_VARIANT\"\nfi\nsudo mkdir -p /etc/atcoder/\necho \"$AC_INSTALL_DIR\"|sudo tee /etc/atcoder/install_dir.txt\nINTERNALL_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nPRECOMPILE_BUILD_FLAGS=(\"${PRECOMPILE_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nsudo mkdir -p \"$AC_TEMP_DIR\" \"$AC_INSTALL_DIR/include\" \"$AC_INSTALL_DIR/lib\"\necho \"::group::tools\"\nsudo apt-get install -y git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nCMAKE_ENVIRONMENT=(\n-G \"Ninja\"\n-DLINK_FLAGS:STRING=\"-fuse-ld=lld\"\n-DCFLAGS:STRING=\"-w\"\n-DCXXFLAGS:STRING=\"-w\"\n-DCMAKE_INSTALL_MESSAGE:STRING=NEVER)\nif ccache -v;then\necho \"ccache enabled\"\nexport CCACHE_ENABLED=1\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache\n-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache)\nfi\nexport CMAKE_ENVIRONMENT\nif [[ $AC_VARIANT == \"gcc\" ]];then\n(VERSION=\"15.1.0\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::GCC\"\nsudo mkdir -p ./gcc\nsudo wget -q \"http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-$VERSION/gcc-$VERSION.tar.gz\" -O ./gcc.tar.gz\nsudo tar -I pigz -xf ./gcc.tar.gz -C ./gcc --strip-components 1\ncd ./gcc\nsudo ./contrib/download_prerequisites\nCC=gcc\nCXX=g++\nif [[ -v CCACHE_ENABLED ]];then\nCC=\"ccache $CC\"\nCXX=\"ccache $CXX\"\nfi\nsudo mkdir -p build&&cd build\nsudo ../configure CC=\"$CC\" CXX=\"$CXX\" \\\n--prefix=\"$AC_INSTALL_DIR\" \\\n--enable-languages=c++ \\\n--disable-bootstrap \\\n--disable-multilib \\\n--disable-libsanitizer \\\n--disable-checking \\\n--disable-nls \\\n--disable-gcov \\\n--disable-libada \\\n--disable-libgm2\nsudo make -j\"$PARALLEL\" >/dev/null\nsudo make install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/gcc\" /usr/local/bin/gcc\nsudo ln -sf \"$AC_INSTALL_DIR/bin/g++\" /usr/local/bin/g++\necho \"::endgroup::\")\nCC=\"gcc\"\nCXX=\"g++\"\nelse\n(VERSION=\"20.1.3\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Clang\"\nsudo mkdir -p ./llvm-project\nsudo wget -q \"https://github.com/llvm/llvm-project/releases/download/llvmorg-$VERSION/llvm-project-$VERSION.src.tar.xz\" -O ./llvm-project.tar.xz\nsudo xz -dk -T0 ./llvm-project.tar.xz&&sudo rm -rf ./llvm-project.tar.xz\nsudo tar -xf ./llvm-project.tar -C ./llvm-project --strip-components 1&&sudo rm -rf ./llvm-project.tar\ncd ./llvm-project\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DLLVM_ENABLE_PROJECTS:STRING=\"clang;lld\" \\\n-DLLVM_ENABLE_RUNTIMES:STRING=\"libcxx;libcxxabi;compiler-rt;libunwind;openmp\" \\\n-DLLVM_TARGETS_TO_BUILD=\"X86\" \\\n-DLLVM_USE_LINKER:STRING=lld \\\n-DLLVM_INCLUDE_TESTS:BOOL=OFF \\\n-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \\\n-DLLVM_ENABLE_PEDANTIC:BOOL=OFF \\\n-DLLVM_ENABLE_WARNINGS:BOOL=OFF \\\n-DLIBCXX_CXX_ABI:STRING=\"libcxxabi\" \\\n-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n../llvm\nsudo cmake --build .\nsudo cmake --build . --target install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang\" /usr/local/bin/clang\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang++\" /usr/local/bin/clang++\nsudo ln -sf \"$AC_INSTALL_DIR/bin/lld\" /usr/local/bin/lld\necho \"::endgroup::\")\n{\nsudo mkdir -p \"$AC_INSTALL_DIR/include/bits\"\nfind \"$AC_INSTALL_DIR/include/c++/v1\" -maxdepth 1 -type f ! -iname '__**' ! -iname '**.**' -exec echo '#include <{}>' \\;|sudo tee \"$AC_INSTALL_DIR/include/bits/stdc++.h\"\n}\nCC=\"clang\"\nCXX=\"clang++\"\nfi\nsudo chmod +x -R \"$AC_INSTALL_DIR\"\n\"$CXX\" --version\n\"$CXX\" -print-search-dirs\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER:STRING=\"$CC\"\n-DCMAKE_CXX_COMPILER:STRING=\"$CXX\")\nif [[ -v CCACHE_ENABLED ]];then\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : ccache $CXX ;\"\nelse\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : $CXX ;\"\nfi\nexport CMAKE_ENVIRONMENT\nexport BOOST_BUILDER_CONFIG\n(VERSION=\"20250512.1\"\nset -eu\nif [[ ${AC_NO_BUILD_abseil:-false} == true && ${AC_NO_BUILD_or_tools:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::abseil\"\nsudo mkdir -p ./abseil\nsudo wget -q \"https://github.com/abseil/abseil-cpp/releases/download/$VERSION/abseil-cpp-$VERSION.tar.gz\" -O ./abseil.tar.gz\nsudo tar -I pigz -xf ./abseil.tar.gz -C ./abseil --strip-components 1\ncd ./abseil\nsudo mkdir -p ./build&&cd ./build\nCMAKE_ARGUMENTS=(\n\"${CMAKE_ENVIRONMENT[@]}\"\n-DABSL_ENABLE_INSTALL:BOOL=ON\n-DABSL_PROPAGATE_CXX_STD:BOOL=ON\n-DABSL_USE_SYSTEM_INCLUDES:BOOL=ON\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\"\n-DCMAKE_CXX_FLAGS:STRING=\"-fPIC ${INTERNALL_BUILD_FLAGS[*]}\")\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON \"${CMAKE_ARGUMENTS[@]}\" ..\nsudo make \"-j$PARALLEL\"\nsudo ctest --parallel \"$PARALLEL\"\nelse\nsudo cmake \"${CMAKE_ARGUMENTS[@]}\" ..\nfi\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"1.6\"\nset -eu\nif \"${AC_NO_BUILD_ac_library:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::AC Library\"\nsudo mkdir -p ./ac-library\nsudo wget -q \"https://github.com/atcoder/ac-library/archive/refs/tags/v$VERSION.tar.gz\" -O ./ac-library.tar.gz\nsudo tar -I pigz -xf ./ac-library.tar.gz -C ./ac-library --strip-components 1\nsudo cp -rf ./ac-library/atcoder \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"1.88.0\"\nset -eu\nif \"${AC_NO_BUILD_boost:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::boost\"\nsudo mkdir -p ./boost\nsudo wget -q \"https://archives.boost.io/release/$VERSION/source/boost_${VERSION//./_}.tar.bz2\" -O ./boost.tar.bz2\nsudo tar -I pbzip2 -xf ./boost.tar.bz2 -C ./boost --strip-components 1\ncd ./boost\nif [[ -v BOOST_BUILDER_CONFIG ]];then\necho \"$BOOST_BUILDER_CONFIG\"|sudo tee -a ./user-config.jam\nelse\nsudo touch ./user-config.jam\nfi\nif [[ -v CCACHE_ENABLED ]];then\nsudo sed -i \\\n-e 's/test_compiler g++$TOOLSET_SUFFIX/test_compiler \"ccache g++$TOOLSET_SUFFIX\"/g' \\\n-e 's/test_compiler clang++$TOOLSET_SUFFIX/test_compiler \"ccache clang++$TOOLSET_SUFFIX\"/g' \\\n./tools/build/src/engine/build.sh\nfi\nif [[ $AC_VARIANT == \"clang\" ]];then\nBOOST_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]}\" \"--target=x86_64-unknown-linux-gnu\")\nfi\nsudo ./bootstrap.sh \\\n--with-toolset=\"$AC_VARIANT\" \\\n--without-libraries=mpi,graph_parallel,python \\\n--prefix=\"$AC_INSTALL_DIR\"\nsudo ./b2 \\\ntoolset=\"$AC_VARIANT\" \\\nlink=static \\\nthreading=single \\\nvariant=release \\\ncflags=\"-w\" \\\ncxxflags=\"${BOOST_BUILD_FLAGS[*]}\" \\\n--user-config=\"./user-config.jam\" \\\n-j\"$PARALLEL\" -d0 \\\ninstall\necho \"::endgroup::\")\n(VERSION=\"3.4.0-4\"\nset -xeu\nif [[ ${AC_NO_BUILD_eigen:-false} == true && \\\n${AC_NO_BUILD_light_gbm:-false} == true && \\\n${AC_NO_BUILD_or_tools:-false} == true ]];then\nexit 0\nfi\necho \"::group::Eigen3\"\nsudo apt-get install -y \"libeigen3-dev=$VERSION\"\nsudo mkdir -p \"$AC_INSTALL_DIR/cmake\"\nsudo cp -Trf /usr/include/eigen3 \"$AC_INSTALL_DIR/include\"\nsudo cp -f \\\n/usr/share/eigen3/cmake/Eigen3Targets.cmake \\\n/usr/share/eigen3/cmake/Eigen3Config.cmake \\\n\"$AC_INSTALL_DIR/cmake\"\nCMAKE_PATH=\"$AC_INSTALL_DIR/include\"\nCMAKE_PATH=\"${CMAKE_PATH//'/opt/'/}\"\nsudo sed -i \\\n-e \"s/include\\/eigen3/${CMAKE_PATH//'/'/'\\/'}/g\" \\\n\"$AC_INSTALL_DIR/cmake/Eigen3Targets.cmake\"\nsudo apt-get remove -y libeigen3-dev\necho \"::endgroup::\")\n(VERSION=\"2:6.3.0+dfsg-2ubuntu6.1\"\nset -eu\nif \"${AC_NO_BUILD_gmp:-false}\";then exit 0;fi\necho \"::group::gmp\"\nsudo apt-get install -y \"libgmp3-dev=$VERSION\"\necho \"::endgroup::\")\n(VERSION=\"0.8.1\"\nset -eu\nif \"${AC_NO_BUILD_immer:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::immer\"\nsudo mkdir -p ./immer\nsudo wget -q \"https://github.com/arximboldi/immer/archive/refs/tags/v$VERSION.tar.gz\" -O ./immer.tar.gz\nsudo tar -I pigz -xf ./immer.tar.gz -C ./immer --strip-components 1\ncd ./immer\nsudo cp -Trf ./immer \"$AC_INSTALL_DIR/include/immer\"\necho \"::endgroup::\")\n(VERSION=\"2.7.1\"\nset -eu\nif [[ ${AC_NO_BUILD_libtorch:-false} == true || ${AC_VARIANT:-} == \"clang\" ]];then\nexit 0\nfi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LibTorch\"\nsudo wget \"https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-$VERSION%2Bcpu.zip\" -O ./libtorch.zip\nsudo unzip -o ./libtorch.zip -d .\nsudo rm -f ./libtorch/lib/libprotobuf.a\nsudo rm -f ./libtorch/lib/libprotobuf-lite.a\nsudo rm -f ./libtorch/lib/libprotoc.a\nsudo cp -Trf ./libtorch/include \"$AC_INSTALL_DIR/include\"\nsudo cp -Trf ./libtorch/lib \"$AC_INSTALL_DIR/lib\"\necho \"::endgroup::\")\n(VERSION=\"4.6.0\"\nset -eu\nif [[ ${AC_NO_BUILD_light_gbm:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LightGBM\"\nif [ -d ./light-gbm/ ];then sudo rm -rf ./light-gbm/;fi\nsudo mkdir -p ./light-gbm\nsudo wget -q \"https://github.com/microsoft/LightGBM/releases/download/v$VERSION/lightgbm-$VERSION.tar.gz\" -O ./light-gbm.tar.gz\nsudo tar -I pigz -xf ./light-gbm.tar.gz -C ./light-gbm/ --strip-components 1\ncd ./light-gbm\nsudo rm -rf ./lightgbm\nsudo rm -rf ./external_libs/eigen\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CLI:BOOL=OFF \\\n-DBUILD_STATIC_LIB=ON \\\n-DUSE_HOMEBREW_FALLBACK=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]} -I$AC_INSTALL_DIR/include -fopenmp\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"9.14\"\nset -eu\nif \"${AC_NO_BUILD_or_tools:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::OR-Tools\"\nsudo mkdir -p ./or-tools\nsudo wget -q \"https://github.com/google/or-tools/archive/refs/tags/v$VERSION.tar.gz\" -O ./or-tools.tar.gz\nsudo tar -I pigz -xf ./or-tools.tar.gz -C ./or-tools --strip-components 1\ncd ./or-tools\nBUILD_TESTING=OFF\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nBUILD_TESTING=ON\nfi\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CXX:BOOL=ON \\\n-DBUILD_BZip2:BOOL=ON -DBUILD_ZLIB:BOOL=ON -DBUILD_Protobuf:BOOL=ON -DBUILD_re2:BOOL=ON \\\n-DUSE_COINOR:BOOL=ON -DBUILD_CoinUtils:BOOL=ON -DBUILD_Osi:BOOL=ON -DBUILD_Clp:BOOL=ON -DBUILD_Cgl:BOOL=ON -DBUILD_Cbc:BOOL=ON \\\n-DUSE_GLPK:BOOL=ON -DBUILD_GLPK:BOOL=ON \\\n-DUSE_HIGHS:BOOL=ON -DBUILD_HIGHS:BOOL=ON \\\n-DUSE_SCIP:BOOL=ON -DBUILD_SCIP:BOOL=ON -DBUILD_soplex:BOOL=ON -DBUILD_Boost:BOOL=ON \\\n-DBUILD_SAMPLES:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF \\\n-DBUILD_TESTING:BOOL=\"$BUILD_TESTING\" \\\n-DCMAKE_PREFIX_PATH:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DBUILD_SHARED_LIBS:BOOL=OFF \\\n-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --config Release --target install\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake --build . --config Release --target test --parallel \"$PARALLEL\"\nfi\necho \"::endgroup::\")\n(VERSION=\"0.12.0\"\nset -eu\nif \"${AC_NO_BUILD_range_v3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::range-v3\"\nsudo mkdir -p ./range-v3\nsudo wget -q \"https://github.com/ericniebler/range-v3/archive/refs/tags/$VERSION.tar.gz\" -O ./range-v3.tar.gz\nsudo tar -I pigz -xf ./range-v3.tar.gz -C ./range-v3 --strip-components 1\nsudo cp -Trf ./range-v3/include \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"4.5.0\"\nset -eu\nif \"${AC_NO_BUILD_unordered_dense:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::unordered_dense\"\nsudo mkdir -p ./unordered_dense\nsudo wget \"https://github.com/martinus/unordered_dense/archive/refs/tags/v$VERSION.tar.gz\" -O ./unordered_dense.tar.gz\nsudo tar -I pigz -xf ./unordered_dense.tar.gz -C ./unordered_dense --strip-components 1\ncd ./unordered_dense\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"4.15.0\"\nset -eu\nif \"${AC_NO_BUILD_z3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Z3\"\nsudo mkdir -p ./z3\nsudo wget -q \"https://github.com/Z3Prover/z3/archive/refs/tags/z3-$VERSION.tar.gz\" -O ./z3.tar.gz\nsudo tar -I pigz -xf ./z3.tar.gz -C ./z3 --strip-components 1\ncd ./z3\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\nif ! ${AC_NO_GENERATE_CACHES:-false};then\necho ::group::generate caches\nif [[ $AC_VARIANT == \"gcc\" ]];then\n\"$CXX\" bits/std.cc bits/std.compat.cc \"${PRECOMPILE_BUILD_FLAGS[@]}\" -c -fmodule-only -fsearch-include-path\nelse\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.cppm\" -o std.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.compat.cppm\" -o std.compat.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\nfi\necho \"::endgroup::\"\nfi\nif [ -v ATCODER ];then\necho \"::group::finalize\"\nfind \"$AC_INSTALL_DIR\" \\\n-name cmake -or -name pkgconfig \\\n-type d -print0|xargs -0 sudo rm -rf\nsudo apt-get purge -y --auto-remove git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nfi"
language = 'C++'
object = 'a.out'
[library]
[library.abseil]
version = '20250512.1'
[[library.abseil.license]]
name = 'Apache-2.0'
url = 'https://github.com/abseil/abseil-cpp/blob/master/LICENSE'
[library.ac-library]
version = '1.6'
[[library.ac-library.license]]
name = 'CC0-1.0'
url = 'https://github.com/atcoder/ac-library/blob/master/LICENSE'
[library.boost]
version = '1.88.0'
[[library.boost.license]]
name = 'BSL-1.0'
url = 'https://www.boost.org/LICENSE_1_0.txt'
[library.cbc]
indirect = true
[[library.cbc.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/Cbc/blob/master/LICENSE'
[library.cgl]
indirect = true
[[library.cgl.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/Cgl/blob/master/LICENSE'
[library.clp]
indirect = true
[[library.clp.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/Clp/blob/master/LICENSE'
[library.coin-utils]
indirect = true
[[library.coin-utils.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/CoinUtils/blob/master/LICENSE'
[library.compute]
indirect = true
[[library.compute.license]]
name = 'BSL-1.0'
url = 'https://github.com/boostorg/compute/blob/36350b7de849300bd3d72a05d8bf890ca405a014/LICENSE_1_0.txt'
[library.eigen]
version = '3.4.0'
[[library.eigen.license]]
name = 'MPL-2.0-no-copyleft-exception'
url = 'https://www.mozilla.org/en-US/MPL/2.0/'
[library.fast_double_parser]
indirect = true
[[library.fast_double_parser.license]]
name = 'Apache-2.0'
url = 'https://github.com/lemire/fast_double_parser/blob/efec03532ef65984786e5e32dbc81f6e6a55a115/LICENSE'
[[library.fast_double_parser.license]]
name = 'BSL-1.0'
url = 'https://github.com/lemire/fast_double_parser/blob/efec03532ef65984786e5e32dbc81f6e6a55a115/LICENSE.BSL'
[library.fmt]
indirect = true
[[library.fmt.license]]
name = 'X11-distribute-modifications-variant'
url = 'https://github.com/fmtlib/fmt/blob/f5e54359df4c26b6230fc61d38aa294581393084/LICENSE.rst'
[library.glpk]
indirect = true
[[library.glpk.license]]
name = 'GPL-3.0-or-later'
url = 'https://www.gnu.org/licenses/gpl-3.0.html'
[library.gmp]
version = '6.3.0'
[[library.gmp.license]]
name = 'LGPL-3.0-only'
url = 'https://www.gnu.org/licenses/lgpl-3.0.html'
[[library.gmp.license]]
name = 'GPL-2.0-only'
url = 'https://www.gnu.org/licenses/old-licenses/gpl-2.0.html'
[library.highs]
indirect = true
[[library.highs.license]]
name = 'MIT'
url = 'https://github.com/ERGO-Code/HiGHS/blob/master/LICENSE.txt'
[library.immer]
version = '0.8.1'
[[library.immer.license]]
name = 'BSL-1.0'
url = 'https://github.com/arximboldi/immer/blob/v0.8.1/LICENSE'
[library.libtorch]
version = '2.7.1'
[[library.libtorch.license]]
name = 'BSD-3-Clause'
url = 'https://github.com/pytorch/pytorch/blob/main/LICENSE'
[[library.libtorch.license]]
name = 'BSD-2-Clause'
url = 'https://github.com/pytorch/pytorch/blob/main/NOTICE#L8-L50'
[[library.libtorch.license]]
name = 'BSD-2-Clause-Views'
url = 'https://github.com/pytorch/pytorch/blob/main/NOTICE#L53-L103'
[[library.libtorch.license]]
name = 'Apache-2.0'
url = 'https://github.com/pytorch/pytorch/blob/main/NOTICE#L105-L285'
[[library.libtorch.license]]
name = 'BSD-3-Clause'
url = 'https://github.com/pytorch/pytorch/blob/main/NOTICE#L287-L321'
[[library.libtorch.license]]
name = 'BSD-3-Clause'
url = 'https://github.com/pytorch/pytorch/blob/main/NOTICE#L324-L360'
[[library.libtorch.license]]
name = 'BSL-1.0'
url = 'https://github.com/pytorch/pytorch/blob/main/NOTICE#L362-L418'
[[library.libtorch.license]]
name = 'MIT-CMU'
url = 'https://github.com/pytorch/pytorch/blob/main/NOTICE#L420-L456'
[library.light-gbm]
version = '4.6.0'
[[library.light-gbm.license]]
name = 'MIT'
url = 'https://github.com/microsoft/light-gbm/blob/master/LICENSE'
[library.or-tools]
version = '9.14'
[[library.or-tools.license]]
name = 'Apache-2.0'
url = 'https://github.com/google/or-tools/blob/stable/LICENSE'
[library.osi]
indirect = true
[[library.osi.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/Osi/blob/master/LICENSE'
[library.protobuf]
indirect = true
[[library.protobuf.license]]
name = 'BSD-3-Clause-Clear'
url = 'https://github.com/protocolbuffers/protobuf/blob/main/LICENSE'
[library.range-v3]
version = '0.12.0'
[[library.range-v3.license]]
name = 'BSL-1.0'
url = 'https://github.com/ericniebler/range-v3/blob/0.12.0/LICENSE.txt#L2'
[[library.range-v3.license]]
name = 'MIT'
url = 'https://github.com/ericniebler/range-v3/blob/0.12.0/LICENSE.txt#L85-L104'
[[library.range-v3.license]]
name = '!License-26'
url = 'https://github.com/ericniebler/range-v3/blob/0.12.0/LICENSE.txt#L107'
[[library.range-v3.license]]
name = '!License-27'
url = 'https://github.com/ericniebler/range-v3/blob/0.12.0/LICENSE.txt#L127'
[library.re2]
indirect = true
[[library.re2.license]]
name = 'BSD-Source-Code'
url = 'https://github.com/google/re2/blob/main/LICENSE'
[library.scip]
indirect = true
[[library.scip.license]]
name = 'Apache-2.0'
url = 'https://www.scipopt.org/scip/doc/html/LICENSE.php'
[library.unordered_dense]
version = '4.5.0'
[[library.unordered_dense.license]]
name = 'MIT'
url = 'https://github.com/martinus/unordered_dense/blob/main/LICENSE'
[library.z3]
version = '4.15.0'
[[library.z3.license]]
name = 'MIT'
url = 'https://github.com/Z3Prover/z3/blob/z3-4.13.3/LICENSE.txt'
[library.zlib]
indirect = true
[[library.zlib.license]]
name = 'Zlib'
url = 'https://www.zlib.net/zlib_license.html'
[[license]]
name = 'GPL-3.0-or-later'
url = 'https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Copying.html'
Clang
Install Script
#!/bin/bash
########## AUTO-GENERATED ##########
# Do not modify this file manually #
####################################
# shellcheck disable=all
PARALLEL="$(($(nproc) + 2))"
AC_VARIANT=clang
INTERNALL_BUILD_FLAGS=(
"-fuse-ld=lld"
"-rtlib=compiler-rt"
"-std=gnu++23"
"-stdlib=libc++"
"-unwindlib=libunwind"
"-w"
"-Wl,-R::install_dir::/lib/x86_64-unknown-linux-gnu"
"-Wl,-R::install_dir::/lib/clang/20/lib/x86_64-unknown-linux-gnu"
)
PRECOMPILE_BUILD_FLAGS=(
"-DATCODER"
"-DONLINE_JUDGE"
"-O2"
"-Wall"
"-Wextra"
"-fconstexpr-depth=1024"
"-fconstexpr-steps=524288"
"-fexperimental-library"
"-flto=auto"
"-fprebuilt-module-path=."
"-ftrivial-auto-var-init=zero"
"-fuse-ld=lld"
"-march=native"
"-pthread"
"-rtlib=compiler-rt"
"-std=gnu++23"
"-stdlib=libc++"
"-unwindlib=libunwind"
"-Wl,--as-needed"
"-Wl,-R::install_dir::/lib/x86_64-unknown-linux-gnu"
"-Wl,-R::install_dir::/lib/clang/20/lib/x86_64-unknown-linux-gnu"
"-fopenmp"
"-fopenmp-extensions"
)
set -eu
ARGUMENTS=("$0")
while (($# > 0)); do
case "$1" in
--variant)
AC_VARIANT="$2"
shift
;;
--install-prefix)
AC_INSTALL_PREFIX="$2"
shift
;;
--install-dir)
AC_INSTALL_DIR="$2"
shift
;;
--temp-dir)
AC_TEMP_DIR="$2"
shift
;;
-h | --help | ?)
echo "{--option} / {ENVIRONMENT} [default] (info)"
echo "--variant / AC_VARIANT [gcc]"
echo "--install-prefix / AC_INSTALL_PREFIX [/opt/atcoder] (ignored iif --install-dir is given)"
echo "--install-dir / AC_INSTALL_DIR [\${install-prefix}/\${variant}']"
echo "--temp-dir / AC_TEMP_DIR [/temp/atcoder/\${variant}]"
exit 0
;;
-*)
echo "$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1"
exit 1
;;
*)
ARGUMENTS=("${ARGUMENTS[@]}" "$1")
;;
esac
shift
done
if [[ ! -v AC_VARIANT ]]; then
export AC_VARIANT="gcc"
fi
if [[ ! -v AC_INSTALL_PREFIX ]]; then
export AC_INSTALL_PREFIX="/opt/atcoder"
fi
if [[ ! -v AC_TEMP_DIR ]]; then
export AC_TEMP_DIR="/tmp/atcoder/${AC_VARIANT}"
fi
if [[ ! -v AC_INSTALL_DIR ]]; then
export AC_INSTALL_DIR="${AC_INSTALL_PREFIX}/${AC_VARIANT}"
fi
sudo mkdir -p /etc/atcoder/
echo "${AC_INSTALL_DIR}" | sudo tee /etc/atcoder/install_dir.txt
# shellcheck disable=SC2016
INTERNALL_BUILD_FLAGS=("${INTERNALL_BUILD_FLAGS[@]/'::install_dir::'/${AC_INSTALL_DIR}}")
PRECOMPILE_BUILD_FLAGS=("${PRECOMPILE_BUILD_FLAGS[@]/'::install_dir::'/${AC_INSTALL_DIR}}")
sudo mkdir -p "${AC_TEMP_DIR}" "${AC_INSTALL_DIR}/include" "${AC_INSTALL_DIR}/lib"
echo "::group::tools"
sudo apt-get install -y git cmake lld ninja-build pigz pbzip2
echo "::endgroup::"
### Configure
CMAKE_ENVIRONMENT=(
-G "Ninja"
-DLINK_FLAGS:STRING="-fuse-ld=lld"
-DCFLAGS:STRING="-w"
-DCXXFLAGS:STRING="-w"
-DCMAKE_INSTALL_MESSAGE:STRING=NEVER
)
if ccache -v; then
echo "ccache enabled"
export CCACHE_ENABLED=1
CMAKE_ENVIRONMENT+=(
-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache
-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache
)
fi
export CMAKE_ENVIRONMENT
### Compiler
if [[ "${AC_VARIANT}" == "gcc" ]]; then
# gcc
(
VERSION="15.1.0"
set -eu
if "${AC_NO_BUILD_COMPILER:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::GCC"
sudo mkdir -p ./gcc
sudo wget -q "http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-${VERSION}/gcc-${VERSION}.tar.gz" -O ./gcc.tar.gz
sudo tar -I pigz -xf ./gcc.tar.gz -C ./gcc --strip-components 1
cd ./gcc
sudo ./contrib/download_prerequisites
CC=gcc
CXX=g++
if [[ -v CCACHE_ENABLED ]]; then
CC="ccache ${CC}"
CXX="ccache ${CXX}"
fi
sudo mkdir -p build && cd build
sudo ../configure CC="${CC}" CXX="${CXX}" \
--prefix="${AC_INSTALL_DIR}" \
--enable-languages=c++ \
--disable-bootstrap \
--disable-multilib \
--disable-libsanitizer \
--disable-checking \
--disable-nls \
--disable-gcov \
--disable-libada \
--disable-libgm2
sudo make -j"${PARALLEL}" >/dev/null
sudo make install
sudo ln -sf "${AC_INSTALL_DIR}/bin/gcc" /usr/local/bin/gcc
sudo ln -sf "${AC_INSTALL_DIR}/bin/g++" /usr/local/bin/g++
echo "::endgroup::"
)
CC="gcc"
CXX="g++"
else
# clang
(
VERSION="20.1.3"
set -eu
if "${AC_NO_BUILD_COMPILER:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::Clang"
sudo mkdir -p ./llvm-project
sudo wget -q "https://github.com/llvm/llvm-project/releases/download/llvmorg-${VERSION}/llvm-project-${VERSION}.src.tar.xz" -O ./llvm-project.tar.xz
sudo xz -dk -T0 ./llvm-project.tar.xz && sudo rm -rf ./llvm-project.tar.xz
sudo tar -xf ./llvm-project.tar -C ./llvm-project --strip-components 1 && sudo rm -rf ./llvm-project.tar
cd ./llvm-project
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DLLVM_ENABLE_PROJECTS:STRING="clang;lld" \
-DLLVM_ENABLE_RUNTIMES:STRING="libcxx;libcxxabi;compiler-rt;libunwind;openmp" \
-DLLVM_TARGETS_TO_BUILD="X86" \
-DLLVM_USE_LINKER:STRING=lld \
-DLLVM_INCLUDE_TESTS:BOOL=OFF \
-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \
-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \
-DLLVM_ENABLE_PEDANTIC:BOOL=OFF \
-DLLVM_ENABLE_WARNINGS:BOOL=OFF \
-DLIBCXX_CXX_ABI:STRING="libcxxabi" \
-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
../llvm
sudo cmake --build .
sudo cmake --build . --target install
sudo ln -sf "${AC_INSTALL_DIR}/bin/clang" /usr/local/bin/clang
sudo ln -sf "${AC_INSTALL_DIR}/bin/clang++" /usr/local/bin/clang++
sudo ln -sf "${AC_INSTALL_DIR}/bin/lld" /usr/local/bin/lld
echo "::endgroup::"
)
{ # generate 'slack' bits/stdc++.h
sudo mkdir -p "${AC_INSTALL_DIR}/include/bits"
find "${AC_INSTALL_DIR}/include/c++/v1" -maxdepth 1 -type f ! -iname '__**' ! -iname '**.**' -exec echo '#include <{}>' \; |
sudo tee "${AC_INSTALL_DIR}/include/bits/stdc++.h"
}
CC="clang"
CXX="clang++"
fi
sudo chmod +x -R "${AC_INSTALL_DIR}"
"${CXX}" --version
"${CXX}" -print-search-dirs
CMAKE_ENVIRONMENT+=(
-DCMAKE_C_COMPILER:STRING="${CC}"
-DCMAKE_CXX_COMPILER:STRING="${CXX}"
)
if [[ -v CCACHE_ENABLED ]]; then
BOOST_BUILDER_CONFIG="using ${AC_VARIANT} : : ccache ${CXX} ;"
else
BOOST_BUILDER_CONFIG="using ${AC_VARIANT} : : ${CXX} ;"
fi
export CMAKE_ENVIRONMENT
export BOOST_BUILDER_CONFIG
### Libraries
# abseil
(
VERSION="20250512.1"
set -eu
if [[ "${AC_NO_BUILD_abseil:-false}" == true && "${AC_NO_BUILD_or_tools:-false}" == true ]]; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::abseil"
sudo mkdir -p ./abseil
sudo wget -q "https://github.com/abseil/abseil-cpp/releases/download/${VERSION}/abseil-cpp-${VERSION}.tar.gz" -O ./abseil.tar.gz
sudo tar -I pigz -xf ./abseil.tar.gz -C ./abseil --strip-components 1
cd ./abseil
sudo mkdir -p ./build && cd ./build
CMAKE_ARGUMENTS=(
"${CMAKE_ENVIRONMENT[@]}"
-DABSL_ENABLE_INSTALL:BOOL=ON
-DABSL_PROPAGATE_CXX_STD:BOOL=ON
-DABSL_USE_SYSTEM_INCLUDES:BOOL=ON
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}"
-DCMAKE_CXX_FLAGS:STRING="-fPIC ${INTERNALL_BUILD_FLAGS[*]}"
)
if [[ -v AC_RUN_TEST ]] && [[ "${AC_RUN_TEST}" = "true" ]]; then
sudo cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON "${CMAKE_ARGUMENTS[@]}" ..
sudo make "-j${PARALLEL}"
sudo ctest --parallel "${PARALLEL}"
else
sudo cmake "${CMAKE_ARGUMENTS[@]}" ..
fi
sudo cmake --build . --target install
echo "::endgroup::"
)
# ac-library
(
VERSION="1.6"
set -eu
if "${AC_NO_BUILD_ac_library:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::AC Library"
sudo mkdir -p ./ac-library
sudo wget -q "https://github.com/atcoder/ac-library/archive/refs/tags/v${VERSION}.tar.gz" -O ./ac-library.tar.gz
sudo tar -I pigz -xf ./ac-library.tar.gz -C ./ac-library --strip-components 1
sudo cp -rf ./ac-library/atcoder "${AC_INSTALL_DIR}/include"
echo "::endgroup::"
)
# boost
(
VERSION="1.88.0"
set -eu
if "${AC_NO_BUILD_boost:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::boost"
sudo mkdir -p ./boost
sudo wget -q "https://archives.boost.io/release/${VERSION}/source/boost_${VERSION//./_}.tar.bz2" -O ./boost.tar.bz2
sudo tar -I pbzip2 -xf ./boost.tar.bz2 -C ./boost --strip-components 1
cd ./boost
if [[ -v BOOST_BUILDER_CONFIG ]]; then
echo "${BOOST_BUILDER_CONFIG}" | sudo tee -a ./user-config.jam
else
sudo touch ./user-config.jam
fi
if [[ -v CCACHE_ENABLED ]]; then
sudo sed -i \
-e 's/test_compiler g++$TOOLSET_SUFFIX/test_compiler "ccache g++$TOOLSET_SUFFIX"/g' \
-e 's/test_compiler clang++$TOOLSET_SUFFIX/test_compiler "ccache clang++$TOOLSET_SUFFIX"/g' \
./tools/build/src/engine/build.sh
fi
if [[ "${AC_VARIANT}" == "clang" ]]; then
BOOST_BUILD_FLAGS=("${INTERNALL_BUILD_FLAGS[@]}" "--target=x86_64-unknown-linux-gnu")
fi
sudo ./bootstrap.sh \
--with-toolset="${AC_VARIANT}" \
--without-libraries=mpi,graph_parallel,python \
--prefix="${AC_INSTALL_DIR}"
sudo ./b2 \
toolset="${AC_VARIANT}" \
link=static \
threading=single \
variant=release \
cflags="-w" \
cxxflags="${BOOST_BUILD_FLAGS[*]}" \
--user-config="./user-config.jam" \
-j"${PARALLEL}" -d0 \
install
echo "::endgroup::"
)
# eigen
(
VERSION="3.4.0-4"
set -xeu
if [[ "${AC_NO_BUILD_eigen:-false}" == true && \
"${AC_NO_BUILD_light_gbm:-false}" == true && \
"${AC_NO_BUILD_or_tools:-false}" == true ]]; then
exit 0
fi
echo "::group::Eigen3"
sudo apt-get install -y "libeigen3-dev=${VERSION}"
sudo mkdir -p "${AC_INSTALL_DIR}/cmake"
sudo cp -Trf /usr/include/eigen3 "${AC_INSTALL_DIR}/include"
# copy and patch cmake files to build OR-Tools.
sudo cp -f \
/usr/share/eigen3/cmake/Eigen3Targets.cmake \
/usr/share/eigen3/cmake/Eigen3Config.cmake \
"${AC_INSTALL_DIR}/cmake"
CMAKE_PATH="${AC_INSTALL_DIR}/include"
CMAKE_PATH="${CMAKE_PATH//'/opt/'/}"
sudo sed -i \
-e "s/include\/eigen3/${CMAKE_PATH//'/'/'\/'}/g" \
"${AC_INSTALL_DIR}/cmake/Eigen3Targets.cmake"
sudo apt-get remove -y libeigen3-dev
echo "::endgroup::"
)
# gmp
(
VERSION="2:6.3.0+dfsg-2ubuntu6.1"
set -eu
if "${AC_NO_BUILD_gmp:-false}"; then exit 0; fi
echo "::group::gmp"
sudo apt-get install -y "libgmp3-dev=${VERSION}"
echo "::endgroup::"
)
# immer
(
VERSION="0.8.1"
set -eu
if "${AC_NO_BUILD_immer:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::immer"
sudo mkdir -p ./immer
sudo wget -q "https://github.com/arximboldi/immer/archive/refs/tags/v${VERSION}.tar.gz" -O ./immer.tar.gz
sudo tar -I pigz -xf ./immer.tar.gz -C ./immer --strip-components 1
cd ./immer
sudo cp -Trf ./immer "${AC_INSTALL_DIR}/include/immer"
echo "::endgroup::"
)
# libtorch
(
VERSION=null
set -eu
if [[ "${AC_NO_BUILD_libtorch:-false}" == true || "${AC_VARIANT:-}" == "clang" ]]; then
exit 0
fi
cd "${AC_TEMP_DIR}"
echo "::group::LibTorch"
sudo wget "https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-${VERSION}%2Bcpu.zip" -O ./libtorch.zip
sudo unzip -o ./libtorch.zip -d .
# remove protobuf, which or-tools has as its dependencies.
sudo rm -f ./libtorch/lib/libprotobuf.a
sudo rm -f ./libtorch/lib/libprotobuf-lite.a
sudo rm -f ./libtorch/lib/libprotoc.a
sudo cp -Trf ./libtorch/include "${AC_INSTALL_DIR}/include"
sudo cp -Trf ./libtorch/lib "${AC_INSTALL_DIR}/lib"
echo "::endgroup::"
)
# light-gbm
(
VERSION="4.6.0"
set -eu
if [[ "${AC_NO_BUILD_light_gbm:-false}" == true ]]; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::LightGBM"
if [ -d ./light-gbm/ ]; then sudo rm -rf ./light-gbm/; fi
sudo mkdir -p ./light-gbm
sudo wget -q "https://github.com/microsoft/LightGBM/releases/download/v${VERSION}/lightgbm-${VERSION}.tar.gz" -O ./light-gbm.tar.gz
sudo tar -I pigz -xf ./light-gbm.tar.gz -C ./light-gbm/ --strip-components 1
cd ./light-gbm
sudo rm -rf ./lightgbm
sudo rm -rf ./external_libs/eigen
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DBUILD_CLI:BOOL=OFF \
-DBUILD_STATIC_LIB=ON \
-DUSE_HOMEBREW_FALLBACK=OFF \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
-DCMAKE_CXX_FLAGS:STRING="${INTERNALL_BUILD_FLAGS[*]} -I${AC_INSTALL_DIR}/include -fopenmp" \
..
sudo cmake --build . --target install
echo "::endgroup::"
)
# or-tools
(
VERSION="9.14"
set -eu
if "${AC_NO_BUILD_or_tools:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::OR-Tools"
sudo mkdir -p ./or-tools
sudo wget -q "https://github.com/google/or-tools/archive/refs/tags/v${VERSION}.tar.gz" -O ./or-tools.tar.gz
sudo tar -I pigz -xf ./or-tools.tar.gz -C ./or-tools --strip-components 1
cd ./or-tools
BUILD_TESTING=OFF
if [[ -v AC_RUN_TEST ]] && [[ "${AC_RUN_TEST}" = "true" ]]; then
BUILD_TESTING=ON
fi
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DBUILD_CXX:BOOL=ON \
-DBUILD_BZip2:BOOL=ON -DBUILD_ZLIB:BOOL=ON -DBUILD_Protobuf:BOOL=ON -DBUILD_re2:BOOL=ON \
-DUSE_COINOR:BOOL=ON -DBUILD_CoinUtils:BOOL=ON -DBUILD_Osi:BOOL=ON -DBUILD_Clp:BOOL=ON -DBUILD_Cgl:BOOL=ON -DBUILD_Cbc:BOOL=ON \
-DUSE_GLPK:BOOL=ON -DBUILD_GLPK:BOOL=ON \
-DUSE_HIGHS:BOOL=ON -DBUILD_HIGHS:BOOL=ON \
-DUSE_SCIP:BOOL=ON -DBUILD_SCIP:BOOL=ON -DBUILD_soplex:BOOL=ON -DBUILD_Boost:BOOL=ON \
-DBUILD_SAMPLES:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF \
-DBUILD_TESTING:BOOL="${BUILD_TESTING}" \
-DCMAKE_PREFIX_PATH:PATH="${AC_INSTALL_DIR}" \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \
-DCMAKE_CXX_FLAGS:STRING="${INTERNALL_BUILD_FLAGS[*]}" \
..
sudo cmake --build . --config Release --target install
if [[ -v AC_RUN_TEST ]] && [[ "${AC_RUN_TEST}" = "true" ]]; then
sudo cmake --build . --config Release --target test --parallel "${PARALLEL}"
fi
echo "::endgroup::"
)
# range-v3
(
VERSION="0.12.0"
set -eu
if "${AC_NO_BUILD_range_v3:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::range-v3"
sudo mkdir -p ./range-v3
sudo wget -q "https://github.com/ericniebler/range-v3/archive/refs/tags/${VERSION}.tar.gz" -O ./range-v3.tar.gz
sudo tar -I pigz -xf ./range-v3.tar.gz -C ./range-v3 --strip-components 1
sudo cp -Trf ./range-v3/include "${AC_INSTALL_DIR}/include"
echo "::endgroup::"
)
# unordered_dense
(
VERSION="4.5.0"
set -eu
if "${AC_NO_BUILD_unordered_dense:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::unordered_dense"
sudo mkdir -p ./unordered_dense
sudo wget "https://github.com/martinus/unordered_dense/archive/refs/tags/v${VERSION}.tar.gz" -O ./unordered_dense.tar.gz
sudo tar -I pigz -xf ./unordered_dense.tar.gz -C ./unordered_dense --strip-components 1
cd ./unordered_dense
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
..
sudo cmake --build . --target install
echo "::endgroup::"
)
# z3
(
VERSION="4.15.0"
set -eu
if "${AC_NO_BUILD_z3:-false}"; then exit 0; fi
cd "${AC_TEMP_DIR}"
echo "::group::Z3"
sudo mkdir -p ./z3
sudo wget -q "https://github.com/Z3Prover/z3/archive/refs/tags/z3-${VERSION}.tar.gz" -O ./z3.tar.gz
sudo tar -I pigz -xf ./z3.tar.gz -C ./z3 --strip-components 1
cd ./z3
sudo mkdir -p ./build && cd ./build
sudo cmake "${CMAKE_ENVIRONMENT[@]}" \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX:PATH="${AC_INSTALL_DIR}" \
-DCMAKE_CXX_FLAGS:STRING="${INTERNALL_BUILD_FLAGS[*]}" \
..
sudo cmake --build . --target install
echo "::endgroup::"
)
if ! ${AC_NO_GENERATE_CACHES:-false}; then
echo ::group::generate caches
if [[ "${AC_VARIANT}" == "gcc" ]]; then
# Generate caches of std and std.compat modules.
"${CXX}" bits/std.cc bits/std.compat.cc "${PRECOMPILE_BUILD_FLAGS[@]}" -c -fmodule-only -fsearch-include-path
else
"${CXX}" "${AC_INSTALL_DIR}/share/libc++/v1/std.cppm" -o std.pcm -Wno-reserved-module-identifier --precompile "${PRECOMPILE_BUILD_FLAGS[@]}"
"${CXX}" "${AC_INSTALL_DIR}/share/libc++/v1/std.compat.cppm" -o std.compat.pcm -Wno-reserved-module-identifier --precompile "${PRECOMPILE_BUILD_FLAGS[@]}"
fi
echo "::endgroup::"
fi
if [ -v ATCODER ]; then
echo "::group::finalize"
find "${AC_INSTALL_DIR}" \
-name cmake -or -name pkgconfig \
-type d -print0 |
xargs -0 sudo rm -rf
sudo apt-get purge -y --auto-remove git cmake lld ninja-build pigz pbzip2
echo "::endgroup::"
fi
Compile Script
#!/bin/bash
########## AUTO-GENERATED ##########
# Do not modify this file manually #
####################################
AC_VARIANT=clang
USER_BUILD_FLAGS=(
"-DATCODER"
"-DNOMINMAX"
"-DONLINE_JUDGE"
"-DOR_PROTO_DLL="
"-DPROTOBUF_USE_DLLS"
"-DUSE_BOP"
"-DUSE_CBC"
"-DUSE_CLP"
"-DUSE_GLOP"
"-DUSE_LP_PARSER"
"-DUSE_MATH_OPT"
"-DUSE_PDLP"
"-DUSE_SCIP"
"-I::install_dir::/include"
"-O2"
"-Wall"
"-Wextra"
"-Wno-float-conversion"
"-Wno-implicit-float-conversion"
"-Wno-implicit-int-float-conversion"
"-Wno-unknown-warning-option"
"-fconstexpr-depth=1024"
"-fconstexpr-steps=524288"
"-fexperimental-library"
"-flto=auto"
"-fprebuilt-module-path=."
"-ftrivial-auto-var-init=zero"
"-fuse-ld=lld"
"-march=native"
"-pthread"
"-rtlib=compiler-rt"
"-std=gnu++23"
"-stdlib=libc++"
"-unwindlib=libunwind"
"-Wl,--as-needed"
"-Wl,-R::install_dir::/lib/x86_64-unknown-linux-gnu"
"-Wl,-R::install_dir::/lib/clang/20/lib/x86_64-unknown-linux-gnu"
"-fopenmp"
"-fopenmp-extensions"
"-L::install_dir::/lib"
"-Wl,-R::install_dir::/lib"
"-fopenmp"
"-labsl_cordz_sample_token"
"-labsl_failure_signal_handler"
"-labsl_flags_parse"
"-labsl_flags_usage"
"-labsl_flags_usage_internal"
"-labsl_log_flags"
"-labsl_periodic_sampler"
"-labsl_poison"
"-labsl_random_internal_distribution_test_util"
"-labsl_scoped_set_env"
"-lboost_atomic"
"-lboost_charconv"
"-lboost_chrono"
"-lboost_container"
"-lboost_context"
"-lboost_contract"
"-lboost_coroutine"
"-lboost_date_time"
"-lboost_exception"
"-lboost_fiber"
"-lboost_filesystem"
"-lboost_graph"
"-lboost_iostreams"
"-lboost_json"
"-lboost_locale"
"-lboost_log"
"-lboost_log_setup"
"-lboost_math_c99"
"-lboost_math_c99f"
"-lboost_math_c99l"
"-lboost_math_tr1"
"-lboost_math_tr1f"
"-lboost_math_tr1l"
"-lboost_nowide"
"-lboost_prg_exec_monitor"
"-lboost_process"
"-lboost_program_options"
"-lboost_random"
"-lboost_regex"
"-lboost_serialization"
"-lboost_stacktrace_from_exception"
"-lboost_system"
"-lboost_test_exec_monitor"
"-lboost_thread"
"-lboost_timer"
"-lboost_type_erasure"
"-lboost_unit_test_framework"
"-lboost_url"
"-lboost_wave"
"-lboost_wserialization"
"-lgmpxx"
"-lgmp"
"-lortools"
"-lCbc"
"-lCbcSolver"
"-lCgl"
"-lClp"
"-lClpSolver"
"-lCoinUtils"
"-lGLPK"
"-lOsi"
"-lOsiCbc"
"-lOsiClp"
"-lhighs"
"-lscip"
"-lz"
"-lbz2"
"-lprotobuf"
"-labsl_die_if_null"
"-labsl_log_initialize"
"-labsl_random_distributions"
"-labsl_random_seed_sequences"
"-labsl_random_internal_entropy_pool"
"-labsl_random_internal_randen"
"-labsl_random_internal_randen_hwaes"
"-labsl_random_internal_randen_hwaes_impl"
"-labsl_random_internal_randen_slow"
"-labsl_random_internal_platform"
"-labsl_random_internal_seed_material"
"-labsl_random_seed_gen_exception"
"-labsl_statusor"
"-labsl_status"
"-lutf8_validity"
"-lutf8_range"
"-pthread"
"-lre2"
"-labsl_log_internal_check_op"
"-labsl_leak_check"
"-labsl_log_internal_conditions"
"-labsl_log_internal_message"
"-labsl_examine_stack"
"-labsl_log_internal_format"
"-labsl_log_internal_nullguard"
"-labsl_log_internal_structured_proto"
"-labsl_log_internal_proto"
"-labsl_log_internal_log_sink_set"
"-labsl_log_internal_globals"
"-labsl_log_globals"
"-labsl_log_sink"
"-labsl_strerror"
"-labsl_vlog_config_internal"
"-labsl_log_internal_fnmatch"
"-labsl_flags_internal"
"-labsl_flags_marshalling"
"-labsl_flags_reflection"
"-labsl_flags_private_handle_accessor"
"-labsl_flags_commandlineflag"
"-labsl_flags_commandlineflag_internal"
"-labsl_flags_config"
"-labsl_flags_program_name"
"-labsl_raw_hash_set"
"-labsl_cord"
"-labsl_cordz_info"
"-labsl_cord_internal"
"-labsl_cordz_functions"
"-labsl_cordz_handle"
"-labsl_crc_cord_state"
"-labsl_crc32c"
"-labsl_crc_internal"
"-labsl_crc_cpu_detect"
"-labsl_hashtablez_sampler"
"-labsl_exponential_biased"
"-labsl_hash"
"-labsl_city"
"-labsl_low_level_hash"
"-labsl_str_format_internal"
"-labsl_synchronization"
"-labsl_graphcycles_internal"
"-labsl_kernel_timeout_internal"
"-labsl_stacktrace"
"-labsl_symbolize"
"-labsl_debugging_internal"
"-labsl_demangle_internal"
"-labsl_demangle_rust"
"-labsl_decode_rust_punycode"
"-labsl_utf8_for_code_point"
"-labsl_malloc_internal"
"-labsl_time"
"-labsl_civil_time"
"-labsl_strings"
"-labsl_strings_internal"
"-labsl_string_view"
"-labsl_int128"
"-labsl_throw_delegate"
"-labsl_time_zone"
"-labsl_tracing_internal"
"-labsl_base"
"-lrt"
"-labsl_raw_logging_internal"
"-labsl_log_severity"
"-labsl_spinlock_wait"
"-lz3"
"-l_lightgbm"
)
set -eu
ARGUMENTS=("$0")
while (($# > 0)); do
case "$1" in
--variant)
AC_VARIANT="$2"
shift
;;
-h | --help | ?)
echo "{--option} / {ENVIRONMENT} [default]"
echo "--variant / AC_VARIANT [gcc]"
exit 0
;;
-*)
echo "$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1"
exit 1
;;
*)
ARGUMENTS=("${ARGUMENTS[@]}" "$1")
;;
esac
shift
done
if [[ -z "${AC_VARIANT}" ]]; then
export AC_VARIANT="gcc"
fi
INSTALL_DIR="$(cat /etc/atcoder/install_dir.txt)"
# shellcheck disable=SC2016
USER_BUILD_FLAGS=("${USER_BUILD_FLAGS[@]//'::install_dir::'/${INSTALL_DIR}}")
if [[ "${AC_VARIANT}" = "gcc" ]]; then
g++ ./Main.cpp -o a.out "${USER_BUILD_FLAGS[@]}"
else
clang++ std.pcm std.compat.pcm ./Main.cpp -o a.out "${USER_BUILD_FLAGS[@]}"
fi
Configuration
########## AUTO-GENERATED ##########
# Do not modify this file manually #
####################################
compile = "AC_VARIANT=clang\nUSER_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DNOMINMAX\"\n\"-DONLINE_JUDGE\"\n\"-DOR_PROTO_DLL=\"\n\"-DPROTOBUF_USE_DLLS\"\n\"-DUSE_BOP\"\n\"-DUSE_CBC\"\n\"-DUSE_CLP\"\n\"-DUSE_GLOP\"\n\"-DUSE_LP_PARSER\"\n\"-DUSE_MATH_OPT\"\n\"-DUSE_PDLP\"\n\"-DUSE_SCIP\"\n\"-I::install_dir::/include\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-Wno-float-conversion\"\n\"-Wno-implicit-float-conversion\"\n\"-Wno-implicit-int-float-conversion\"\n\"-Wno-unknown-warning-option\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-steps=524288\"\n\"-fexperimental-library\"\n\"-flto=auto\"\n\"-fprebuilt-module-path=.\"\n\"-ftrivial-auto-var-init=zero\"\n\"-fuse-ld=lld\"\n\"-march=native\"\n\"-pthread\"\n\"-rtlib=compiler-rt\"\n\"-std=gnu++23\"\n\"-stdlib=libc++\"\n\"-unwindlib=libunwind\"\n\"-Wl,--as-needed\"\n\"-Wl,-R::install_dir::/lib/x86_64-unknown-linux-gnu\"\n\"-Wl,-R::install_dir::/lib/clang/20/lib/x86_64-unknown-linux-gnu\"\n\"-fopenmp\"\n\"-fopenmp-extensions\"\n\"-L::install_dir::/lib\"\n\"-Wl,-R::install_dir::/lib\"\n\"-fopenmp\"\n\"-labsl_cordz_sample_token\"\n\"-labsl_failure_signal_handler\"\n\"-labsl_flags_parse\"\n\"-labsl_flags_usage\"\n\"-labsl_flags_usage_internal\"\n\"-labsl_log_flags\"\n\"-labsl_periodic_sampler\"\n\"-labsl_poison\"\n\"-labsl_random_internal_distribution_test_util\"\n\"-labsl_scoped_set_env\"\n\"-lboost_atomic\"\n\"-lboost_charconv\"\n\"-lboost_chrono\"\n\"-lboost_container\"\n\"-lboost_context\"\n\"-lboost_contract\"\n\"-lboost_coroutine\"\n\"-lboost_date_time\"\n\"-lboost_exception\"\n\"-lboost_fiber\"\n\"-lboost_filesystem\"\n\"-lboost_graph\"\n\"-lboost_iostreams\"\n\"-lboost_json\"\n\"-lboost_locale\"\n\"-lboost_log\"\n\"-lboost_log_setup\"\n\"-lboost_math_c99\"\n\"-lboost_math_c99f\"\n\"-lboost_math_c99l\"\n\"-lboost_math_tr1\"\n\"-lboost_math_tr1f\"\n\"-lboost_math_tr1l\"\n\"-lboost_nowide\"\n\"-lboost_prg_exec_monitor\"\n\"-lboost_process\"\n\"-lboost_program_options\"\n\"-lboost_random\"\n\"-lboost_regex\"\n\"-lboost_serialization\"\n\"-lboost_stacktrace_from_exception\"\n\"-lboost_system\"\n\"-lboost_test_exec_monitor\"\n\"-lboost_thread\"\n\"-lboost_timer\"\n\"-lboost_type_erasure\"\n\"-lboost_unit_test_framework\"\n\"-lboost_url\"\n\"-lboost_wave\"\n\"-lboost_wserialization\"\n\"-lgmpxx\"\n\"-lgmp\"\n\"-lortools\"\n\"-lCbc\"\n\"-lCbcSolver\"\n\"-lCgl\"\n\"-lClp\"\n\"-lClpSolver\"\n\"-lCoinUtils\"\n\"-lGLPK\"\n\"-lOsi\"\n\"-lOsiCbc\"\n\"-lOsiClp\"\n\"-lhighs\"\n\"-lscip\"\n\"-lz\"\n\"-lbz2\"\n\"-lprotobuf\"\n\"-labsl_die_if_null\"\n\"-labsl_log_initialize\"\n\"-labsl_random_distributions\"\n\"-labsl_random_seed_sequences\"\n\"-labsl_random_internal_entropy_pool\"\n\"-labsl_random_internal_randen\"\n\"-labsl_random_internal_randen_hwaes\"\n\"-labsl_random_internal_randen_hwaes_impl\"\n\"-labsl_random_internal_randen_slow\"\n\"-labsl_random_internal_platform\"\n\"-labsl_random_internal_seed_material\"\n\"-labsl_random_seed_gen_exception\"\n\"-labsl_statusor\"\n\"-labsl_status\"\n\"-lutf8_validity\"\n\"-lutf8_range\"\n\"-pthread\"\n\"-lre2\"\n\"-labsl_log_internal_check_op\"\n\"-labsl_leak_check\"\n\"-labsl_log_internal_conditions\"\n\"-labsl_log_internal_message\"\n\"-labsl_examine_stack\"\n\"-labsl_log_internal_format\"\n\"-labsl_log_internal_nullguard\"\n\"-labsl_log_internal_structured_proto\"\n\"-labsl_log_internal_proto\"\n\"-labsl_log_internal_log_sink_set\"\n\"-labsl_log_internal_globals\"\n\"-labsl_log_globals\"\n\"-labsl_log_sink\"\n\"-labsl_strerror\"\n\"-labsl_vlog_config_internal\"\n\"-labsl_log_internal_fnmatch\"\n\"-labsl_flags_internal\"\n\"-labsl_flags_marshalling\"\n\"-labsl_flags_reflection\"\n\"-labsl_flags_private_handle_accessor\"\n\"-labsl_flags_commandlineflag\"\n\"-labsl_flags_commandlineflag_internal\"\n\"-labsl_flags_config\"\n\"-labsl_flags_program_name\"\n\"-labsl_raw_hash_set\"\n\"-labsl_cord\"\n\"-labsl_cordz_info\"\n\"-labsl_cord_internal\"\n\"-labsl_cordz_functions\"\n\"-labsl_cordz_handle\"\n\"-labsl_crc_cord_state\"\n\"-labsl_crc32c\"\n\"-labsl_crc_internal\"\n\"-labsl_crc_cpu_detect\"\n\"-labsl_hashtablez_sampler\"\n\"-labsl_exponential_biased\"\n\"-labsl_hash\"\n\"-labsl_city\"\n\"-labsl_low_level_hash\"\n\"-labsl_str_format_internal\"\n\"-labsl_synchronization\"\n\"-labsl_graphcycles_internal\"\n\"-labsl_kernel_timeout_internal\"\n\"-labsl_stacktrace\"\n\"-labsl_symbolize\"\n\"-labsl_debugging_internal\"\n\"-labsl_demangle_internal\"\n\"-labsl_demangle_rust\"\n\"-labsl_decode_rust_punycode\"\n\"-labsl_utf8_for_code_point\"\n\"-labsl_malloc_internal\"\n\"-labsl_time\"\n\"-labsl_civil_time\"\n\"-labsl_strings\"\n\"-labsl_strings_internal\"\n\"-labsl_string_view\"\n\"-labsl_int128\"\n\"-labsl_throw_delegate\"\n\"-labsl_time_zone\"\n\"-labsl_tracing_internal\"\n\"-labsl_base\"\n\"-lrt\"\n\"-labsl_raw_logging_internal\"\n\"-labsl_log_severity\"\n\"-labsl_spinlock_wait\"\n\"-lz3\"\n\"-l_lightgbm\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default]\"\necho \"--variant / AC_VARIANT [gcc]\"\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ -z $AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nINSTALL_DIR=\"$(cat /etc/atcoder/install_dir.txt)\"\nUSER_BUILD_FLAGS=(\"${USER_BUILD_FLAGS[@]//'::install_dir::'/$INSTALL_DIR}\")\nif [[ $AC_VARIANT == \"gcc\" ]];then\ng++ ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nelse\nclang++ std.pcm std.compat.pcm ./Main.cpp -o a.out \"${USER_BUILD_FLAGS[@]}\"\nfi"
display = 'C++23 (Clang 20.1.3)'
execution = ['./a.out']
filename = 'Main.cpp'
install = "PARALLEL=\"$(($(nproc)+2))\"\nAC_VARIANT=clang\nINTERNALL_BUILD_FLAGS=(\n\"-fuse-ld=lld\"\n\"-rtlib=compiler-rt\"\n\"-std=gnu++23\"\n\"-stdlib=libc++\"\n\"-unwindlib=libunwind\"\n\"-w\"\n\"-Wl,-R::install_dir::/lib/x86_64-unknown-linux-gnu\"\n\"-Wl,-R::install_dir::/lib/clang/20/lib/x86_64-unknown-linux-gnu\")\nPRECOMPILE_BUILD_FLAGS=(\n\"-DATCODER\"\n\"-DONLINE_JUDGE\"\n\"-O2\"\n\"-Wall\"\n\"-Wextra\"\n\"-fconstexpr-depth=1024\"\n\"-fconstexpr-steps=524288\"\n\"-fexperimental-library\"\n\"-flto=auto\"\n\"-fprebuilt-module-path=.\"\n\"-ftrivial-auto-var-init=zero\"\n\"-fuse-ld=lld\"\n\"-march=native\"\n\"-pthread\"\n\"-rtlib=compiler-rt\"\n\"-std=gnu++23\"\n\"-stdlib=libc++\"\n\"-unwindlib=libunwind\"\n\"-Wl,--as-needed\"\n\"-Wl,-R::install_dir::/lib/x86_64-unknown-linux-gnu\"\n\"-Wl,-R::install_dir::/lib/clang/20/lib/x86_64-unknown-linux-gnu\"\n\"-fopenmp\"\n\"-fopenmp-extensions\")\nset -eu\nARGUMENTS=(\"$0\")\nwhile (($#>0));do\ncase \"$1\" in\n--variant)AC_VARIANT=\"$2\"\nshift\n;;\n--install-prefix)AC_INSTALL_PREFIX=\"$2\"\nshift\n;;\n--install-dir)AC_INSTALL_DIR=\"$2\"\nshift\n;;\n--temp-dir)AC_TEMP_DIR=\"$2\"\nshift\n;;\n-h|--help|?)echo \"{--option} / {ENVIRONMENT} [default] (info)\"\necho \"--variant / AC_VARIANT [gcc]\"\necho \"--install-prefix / AC_INSTALL_PREFIX [/opt/atcoder] (ignored iif --install-dir is given)\"\necho \"--install-dir / AC_INSTALL_DIR [\\${install-prefix}/\\${variant}']\"\necho '--temp-dir / AC_TEMP_DIR [/temp/atcoder/${variant}]'\nexit 0\n;;\n-*)echo \"$(tput setaf 1)ERROR: $(tput sgr0)Unexpected command option: $(tput setaf 5)$1\"\nexit 1\n;;\n*)ARGUMENTS=(\"${ARGUMENTS[@]}\" \"$1\")\nesac\nshift\ndone\nif [[ ! -v AC_VARIANT ]];then\nexport AC_VARIANT=\"gcc\"\nfi\nif [[ ! -v AC_INSTALL_PREFIX ]];then\nexport AC_INSTALL_PREFIX=\"/opt/atcoder\"\nfi\nif [[ ! -v AC_TEMP_DIR ]];then\nexport AC_TEMP_DIR=\"/tmp/atcoder/$AC_VARIANT\"\nfi\nif [[ ! -v AC_INSTALL_DIR ]];then\nexport AC_INSTALL_DIR=\"$AC_INSTALL_PREFIX/$AC_VARIANT\"\nfi\nsudo mkdir -p /etc/atcoder/\necho \"$AC_INSTALL_DIR\"|sudo tee /etc/atcoder/install_dir.txt\nINTERNALL_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nPRECOMPILE_BUILD_FLAGS=(\"${PRECOMPILE_BUILD_FLAGS[@]/'::install_dir::'/$AC_INSTALL_DIR}\")\nsudo mkdir -p \"$AC_TEMP_DIR\" \"$AC_INSTALL_DIR/include\" \"$AC_INSTALL_DIR/lib\"\necho \"::group::tools\"\nsudo apt-get install -y git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nCMAKE_ENVIRONMENT=(\n-G \"Ninja\"\n-DLINK_FLAGS:STRING=\"-fuse-ld=lld\"\n-DCFLAGS:STRING=\"-w\"\n-DCXXFLAGS:STRING=\"-w\"\n-DCMAKE_INSTALL_MESSAGE:STRING=NEVER)\nif ccache -v;then\necho \"ccache enabled\"\nexport CCACHE_ENABLED=1\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER_LAUNCHER:STRING=ccache\n-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=ccache)\nfi\nexport CMAKE_ENVIRONMENT\nif [[ $AC_VARIANT == \"gcc\" ]];then\n(VERSION=\"15.1.0\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::GCC\"\nsudo mkdir -p ./gcc\nsudo wget -q \"http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-$VERSION/gcc-$VERSION.tar.gz\" -O ./gcc.tar.gz\nsudo tar -I pigz -xf ./gcc.tar.gz -C ./gcc --strip-components 1\ncd ./gcc\nsudo ./contrib/download_prerequisites\nCC=gcc\nCXX=g++\nif [[ -v CCACHE_ENABLED ]];then\nCC=\"ccache $CC\"\nCXX=\"ccache $CXX\"\nfi\nsudo mkdir -p build&&cd build\nsudo ../configure CC=\"$CC\" CXX=\"$CXX\" \\\n--prefix=\"$AC_INSTALL_DIR\" \\\n--enable-languages=c++ \\\n--disable-bootstrap \\\n--disable-multilib \\\n--disable-libsanitizer \\\n--disable-checking \\\n--disable-nls \\\n--disable-gcov \\\n--disable-libada \\\n--disable-libgm2\nsudo make -j\"$PARALLEL\" >/dev/null\nsudo make install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/gcc\" /usr/local/bin/gcc\nsudo ln -sf \"$AC_INSTALL_DIR/bin/g++\" /usr/local/bin/g++\necho \"::endgroup::\")\nCC=\"gcc\"\nCXX=\"g++\"\nelse\n(VERSION=\"20.1.3\"\nset -eu\nif \"${AC_NO_BUILD_COMPILER:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Clang\"\nsudo mkdir -p ./llvm-project\nsudo wget -q \"https://github.com/llvm/llvm-project/releases/download/llvmorg-$VERSION/llvm-project-$VERSION.src.tar.xz\" -O ./llvm-project.tar.xz\nsudo xz -dk -T0 ./llvm-project.tar.xz&&sudo rm -rf ./llvm-project.tar.xz\nsudo tar -xf ./llvm-project.tar -C ./llvm-project --strip-components 1&&sudo rm -rf ./llvm-project.tar\ncd ./llvm-project\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DLLVM_ENABLE_PROJECTS:STRING=\"clang;lld\" \\\n-DLLVM_ENABLE_RUNTIMES:STRING=\"libcxx;libcxxabi;compiler-rt;libunwind;openmp\" \\\n-DLLVM_TARGETS_TO_BUILD=\"X86\" \\\n-DLLVM_USE_LINKER:STRING=lld \\\n-DLLVM_INCLUDE_TESTS:BOOL=OFF \\\n-DLLVM_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DLLVM_INCLUDE_EXAMPLES:BOOL=OFF \\\n-DLLVM_ENABLE_PEDANTIC:BOOL=OFF \\\n-DLLVM_ENABLE_WARNINGS:BOOL=OFF \\\n-DLIBCXX_CXX_ABI:STRING=\"libcxxabi\" \\\n-DLIBCXX_INCLUDE_BENCHMARKS:BOOL=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n../llvm\nsudo cmake --build .\nsudo cmake --build . --target install\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang\" /usr/local/bin/clang\nsudo ln -sf \"$AC_INSTALL_DIR/bin/clang++\" /usr/local/bin/clang++\nsudo ln -sf \"$AC_INSTALL_DIR/bin/lld\" /usr/local/bin/lld\necho \"::endgroup::\")\n{\nsudo mkdir -p \"$AC_INSTALL_DIR/include/bits\"\nfind \"$AC_INSTALL_DIR/include/c++/v1\" -maxdepth 1 -type f ! -iname '__**' ! -iname '**.**' -exec echo '#include <{}>' \\;|sudo tee \"$AC_INSTALL_DIR/include/bits/stdc++.h\"\n}\nCC=\"clang\"\nCXX=\"clang++\"\nfi\nsudo chmod +x -R \"$AC_INSTALL_DIR\"\n\"$CXX\" --version\n\"$CXX\" -print-search-dirs\nCMAKE_ENVIRONMENT+=(\n-DCMAKE_C_COMPILER:STRING=\"$CC\"\n-DCMAKE_CXX_COMPILER:STRING=\"$CXX\")\nif [[ -v CCACHE_ENABLED ]];then\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : ccache $CXX ;\"\nelse\nBOOST_BUILDER_CONFIG=\"using $AC_VARIANT : : $CXX ;\"\nfi\nexport CMAKE_ENVIRONMENT\nexport BOOST_BUILDER_CONFIG\n(VERSION=\"20250512.1\"\nset -eu\nif [[ ${AC_NO_BUILD_abseil:-false} == true && ${AC_NO_BUILD_or_tools:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::abseil\"\nsudo mkdir -p ./abseil\nsudo wget -q \"https://github.com/abseil/abseil-cpp/releases/download/$VERSION/abseil-cpp-$VERSION.tar.gz\" -O ./abseil.tar.gz\nsudo tar -I pigz -xf ./abseil.tar.gz -C ./abseil --strip-components 1\ncd ./abseil\nsudo mkdir -p ./build&&cd ./build\nCMAKE_ARGUMENTS=(\n\"${CMAKE_ENVIRONMENT[@]}\"\n-DABSL_ENABLE_INSTALL:BOOL=ON\n-DABSL_PROPAGATE_CXX_STD:BOOL=ON\n-DABSL_USE_SYSTEM_INCLUDES:BOOL=ON\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\"\n-DCMAKE_CXX_FLAGS:STRING=\"-fPIC ${INTERNALL_BUILD_FLAGS[*]}\")\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=ON \"${CMAKE_ARGUMENTS[@]}\" ..\nsudo make \"-j$PARALLEL\"\nsudo ctest --parallel \"$PARALLEL\"\nelse\nsudo cmake \"${CMAKE_ARGUMENTS[@]}\" ..\nfi\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"1.6\"\nset -eu\nif \"${AC_NO_BUILD_ac_library:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::AC Library\"\nsudo mkdir -p ./ac-library\nsudo wget -q \"https://github.com/atcoder/ac-library/archive/refs/tags/v$VERSION.tar.gz\" -O ./ac-library.tar.gz\nsudo tar -I pigz -xf ./ac-library.tar.gz -C ./ac-library --strip-components 1\nsudo cp -rf ./ac-library/atcoder \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"1.88.0\"\nset -eu\nif \"${AC_NO_BUILD_boost:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::boost\"\nsudo mkdir -p ./boost\nsudo wget -q \"https://archives.boost.io/release/$VERSION/source/boost_${VERSION//./_}.tar.bz2\" -O ./boost.tar.bz2\nsudo tar -I pbzip2 -xf ./boost.tar.bz2 -C ./boost --strip-components 1\ncd ./boost\nif [[ -v BOOST_BUILDER_CONFIG ]];then\necho \"$BOOST_BUILDER_CONFIG\"|sudo tee -a ./user-config.jam\nelse\nsudo touch ./user-config.jam\nfi\nif [[ -v CCACHE_ENABLED ]];then\nsudo sed -i \\\n-e 's/test_compiler g++$TOOLSET_SUFFIX/test_compiler \"ccache g++$TOOLSET_SUFFIX\"/g' \\\n-e 's/test_compiler clang++$TOOLSET_SUFFIX/test_compiler \"ccache clang++$TOOLSET_SUFFIX\"/g' \\\n./tools/build/src/engine/build.sh\nfi\nif [[ $AC_VARIANT == \"clang\" ]];then\nBOOST_BUILD_FLAGS=(\"${INTERNALL_BUILD_FLAGS[@]}\" \"--target=x86_64-unknown-linux-gnu\")\nfi\nsudo ./bootstrap.sh \\\n--with-toolset=\"$AC_VARIANT\" \\\n--without-libraries=mpi,graph_parallel,python \\\n--prefix=\"$AC_INSTALL_DIR\"\nsudo ./b2 \\\ntoolset=\"$AC_VARIANT\" \\\nlink=static \\\nthreading=single \\\nvariant=release \\\ncflags=\"-w\" \\\ncxxflags=\"${BOOST_BUILD_FLAGS[*]}\" \\\n--user-config=\"./user-config.jam\" \\\n-j\"$PARALLEL\" -d0 \\\ninstall\necho \"::endgroup::\")\n(VERSION=\"3.4.0-4\"\nset -xeu\nif [[ ${AC_NO_BUILD_eigen:-false} == true && \\\n${AC_NO_BUILD_light_gbm:-false} == true && \\\n${AC_NO_BUILD_or_tools:-false} == true ]];then\nexit 0\nfi\necho \"::group::Eigen3\"\nsudo apt-get install -y \"libeigen3-dev=$VERSION\"\nsudo mkdir -p \"$AC_INSTALL_DIR/cmake\"\nsudo cp -Trf /usr/include/eigen3 \"$AC_INSTALL_DIR/include\"\nsudo cp -f \\\n/usr/share/eigen3/cmake/Eigen3Targets.cmake \\\n/usr/share/eigen3/cmake/Eigen3Config.cmake \\\n\"$AC_INSTALL_DIR/cmake\"\nCMAKE_PATH=\"$AC_INSTALL_DIR/include\"\nCMAKE_PATH=\"${CMAKE_PATH//'/opt/'/}\"\nsudo sed -i \\\n-e \"s/include\\/eigen3/${CMAKE_PATH//'/'/'\\/'}/g\" \\\n\"$AC_INSTALL_DIR/cmake/Eigen3Targets.cmake\"\nsudo apt-get remove -y libeigen3-dev\necho \"::endgroup::\")\n(VERSION=\"2:6.3.0+dfsg-2ubuntu6.1\"\nset -eu\nif \"${AC_NO_BUILD_gmp:-false}\";then exit 0;fi\necho \"::group::gmp\"\nsudo apt-get install -y \"libgmp3-dev=$VERSION\"\necho \"::endgroup::\")\n(VERSION=\"0.8.1\"\nset -eu\nif \"${AC_NO_BUILD_immer:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::immer\"\nsudo mkdir -p ./immer\nsudo wget -q \"https://github.com/arximboldi/immer/archive/refs/tags/v$VERSION.tar.gz\" -O ./immer.tar.gz\nsudo tar -I pigz -xf ./immer.tar.gz -C ./immer --strip-components 1\ncd ./immer\nsudo cp -Trf ./immer \"$AC_INSTALL_DIR/include/immer\"\necho \"::endgroup::\")\n(VERSION=null\nset -eu\nif [[ ${AC_NO_BUILD_libtorch:-false} == true || ${AC_VARIANT:-} == \"clang\" ]];then\nexit 0\nfi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LibTorch\"\nsudo wget \"https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-$VERSION%2Bcpu.zip\" -O ./libtorch.zip\nsudo unzip -o ./libtorch.zip -d .\nsudo rm -f ./libtorch/lib/libprotobuf.a\nsudo rm -f ./libtorch/lib/libprotobuf-lite.a\nsudo rm -f ./libtorch/lib/libprotoc.a\nsudo cp -Trf ./libtorch/include \"$AC_INSTALL_DIR/include\"\nsudo cp -Trf ./libtorch/lib \"$AC_INSTALL_DIR/lib\"\necho \"::endgroup::\")\n(VERSION=\"4.6.0\"\nset -eu\nif [[ ${AC_NO_BUILD_light_gbm:-false} == true ]];then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::LightGBM\"\nif [ -d ./light-gbm/ ];then sudo rm -rf ./light-gbm/;fi\nsudo mkdir -p ./light-gbm\nsudo wget -q \"https://github.com/microsoft/LightGBM/releases/download/v$VERSION/lightgbm-$VERSION.tar.gz\" -O ./light-gbm.tar.gz\nsudo tar -I pigz -xf ./light-gbm.tar.gz -C ./light-gbm/ --strip-components 1\ncd ./light-gbm\nsudo rm -rf ./lightgbm\nsudo rm -rf ./external_libs/eigen\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CLI:BOOL=OFF \\\n-DBUILD_STATIC_LIB=ON \\\n-DUSE_HOMEBREW_FALLBACK=OFF \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]} -I$AC_INSTALL_DIR/include -fopenmp\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"9.14\"\nset -eu\nif \"${AC_NO_BUILD_or_tools:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::OR-Tools\"\nsudo mkdir -p ./or-tools\nsudo wget -q \"https://github.com/google/or-tools/archive/refs/tags/v$VERSION.tar.gz\" -O ./or-tools.tar.gz\nsudo tar -I pigz -xf ./or-tools.tar.gz -C ./or-tools --strip-components 1\ncd ./or-tools\nBUILD_TESTING=OFF\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nBUILD_TESTING=ON\nfi\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DBUILD_CXX:BOOL=ON \\\n-DBUILD_BZip2:BOOL=ON -DBUILD_ZLIB:BOOL=ON -DBUILD_Protobuf:BOOL=ON -DBUILD_re2:BOOL=ON \\\n-DUSE_COINOR:BOOL=ON -DBUILD_CoinUtils:BOOL=ON -DBUILD_Osi:BOOL=ON -DBUILD_Clp:BOOL=ON -DBUILD_Cgl:BOOL=ON -DBUILD_Cbc:BOOL=ON \\\n-DUSE_GLPK:BOOL=ON -DBUILD_GLPK:BOOL=ON \\\n-DUSE_HIGHS:BOOL=ON -DBUILD_HIGHS:BOOL=ON \\\n-DUSE_SCIP:BOOL=ON -DBUILD_SCIP:BOOL=ON -DBUILD_soplex:BOOL=ON -DBUILD_Boost:BOOL=ON \\\n-DBUILD_SAMPLES:BOOL=OFF -DBUILD_EXAMPLES:BOOL=OFF \\\n-DBUILD_TESTING:BOOL=\"$BUILD_TESTING\" \\\n-DCMAKE_PREFIX_PATH:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DBUILD_SHARED_LIBS:BOOL=OFF \\\n-DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=ON \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --config Release --target install\nif [[ -v AC_RUN_TEST ]]&&[[ $AC_RUN_TEST == \"true\" ]];then\nsudo cmake --build . --config Release --target test --parallel \"$PARALLEL\"\nfi\necho \"::endgroup::\")\n(VERSION=\"0.12.0\"\nset -eu\nif \"${AC_NO_BUILD_range_v3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::range-v3\"\nsudo mkdir -p ./range-v3\nsudo wget -q \"https://github.com/ericniebler/range-v3/archive/refs/tags/$VERSION.tar.gz\" -O ./range-v3.tar.gz\nsudo tar -I pigz -xf ./range-v3.tar.gz -C ./range-v3 --strip-components 1\nsudo cp -Trf ./range-v3/include \"$AC_INSTALL_DIR/include\"\necho \"::endgroup::\")\n(VERSION=\"4.5.0\"\nset -eu\nif \"${AC_NO_BUILD_unordered_dense:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::unordered_dense\"\nsudo mkdir -p ./unordered_dense\nsudo wget \"https://github.com/martinus/unordered_dense/archive/refs/tags/v$VERSION.tar.gz\" -O ./unordered_dense.tar.gz\nsudo tar -I pigz -xf ./unordered_dense.tar.gz -C ./unordered_dense --strip-components 1\ncd ./unordered_dense\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\n(VERSION=\"4.15.0\"\nset -eu\nif \"${AC_NO_BUILD_z3:-false}\";then exit 0;fi\ncd \"$AC_TEMP_DIR\"\necho \"::group::Z3\"\nsudo mkdir -p ./z3\nsudo wget -q \"https://github.com/Z3Prover/z3/archive/refs/tags/z3-$VERSION.tar.gz\" -O ./z3.tar.gz\nsudo tar -I pigz -xf ./z3.tar.gz -C ./z3 --strip-components 1\ncd ./z3\nsudo mkdir -p ./build&&cd ./build\nsudo cmake \"${CMAKE_ENVIRONMENT[@]}\" \\\n-DCMAKE_BUILD_TYPE:STRING=Release \\\n-DCMAKE_INSTALL_PREFIX:PATH=\"$AC_INSTALL_DIR\" \\\n-DCMAKE_CXX_FLAGS:STRING=\"${INTERNALL_BUILD_FLAGS[*]}\" \\\n..\nsudo cmake --build . --target install\necho \"::endgroup::\")\nif ! ${AC_NO_GENERATE_CACHES:-false};then\necho ::group::generate caches\nif [[ $AC_VARIANT == \"gcc\" ]];then\n\"$CXX\" bits/std.cc bits/std.compat.cc \"${PRECOMPILE_BUILD_FLAGS[@]}\" -c -fmodule-only -fsearch-include-path\nelse\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.cppm\" -o std.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\n\"$CXX\" \"$AC_INSTALL_DIR/share/libc++/v1/std.compat.cppm\" -o std.compat.pcm -Wno-reserved-module-identifier --precompile \"${PRECOMPILE_BUILD_FLAGS[@]}\"\nfi\necho \"::endgroup::\"\nfi\nif [ -v ATCODER ];then\necho \"::group::finalize\"\nfind \"$AC_INSTALL_DIR\" \\\n-name cmake -or -name pkgconfig \\\n-type d -print0|xargs -0 sudo rm -rf\nsudo apt-get purge -y --auto-remove git cmake lld ninja-build pigz pbzip2\necho \"::endgroup::\"\nfi"
language = 'C++'
object = 'a.out'
[library]
[library.abseil]
version = '20250512.1'
[[library.abseil.license]]
name = 'Apache-2.0'
url = 'https://github.com/abseil/abseil-cpp/blob/master/LICENSE'
[library.ac-library]
version = '1.6'
[[library.ac-library.license]]
name = 'CC0-1.0'
url = 'https://github.com/atcoder/ac-library/blob/master/LICENSE'
[library.boost]
version = '1.88.0'
[[library.boost.license]]
name = 'BSL-1.0'
url = 'https://www.boost.org/LICENSE_1_0.txt'
[library.cbc]
indirect = true
[[library.cbc.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/Cbc/blob/master/LICENSE'
[library.cgl]
indirect = true
[[library.cgl.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/Cgl/blob/master/LICENSE'
[library.clp]
indirect = true
[[library.clp.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/Clp/blob/master/LICENSE'
[library.coin-utils]
indirect = true
[[library.coin-utils.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/CoinUtils/blob/master/LICENSE'
[library.compute]
indirect = true
[[library.compute.license]]
name = 'BSL-1.0'
url = 'https://github.com/boostorg/compute/blob/36350b7de849300bd3d72a05d8bf890ca405a014/LICENSE_1_0.txt'
[library.eigen]
version = '3.4.0'
[[library.eigen.license]]
name = 'MPL-2.0-no-copyleft-exception'
url = 'https://www.mozilla.org/en-US/MPL/2.0/'
[library.fast_double_parser]
indirect = true
[[library.fast_double_parser.license]]
name = 'Apache-2.0'
url = 'https://github.com/lemire/fast_double_parser/blob/efec03532ef65984786e5e32dbc81f6e6a55a115/LICENSE'
[[library.fast_double_parser.license]]
name = 'BSL-1.0'
url = 'https://github.com/lemire/fast_double_parser/blob/efec03532ef65984786e5e32dbc81f6e6a55a115/LICENSE.BSL'
[library.fmt]
indirect = true
[[library.fmt.license]]
name = 'X11-distribute-modifications-variant'
url = 'https://github.com/fmtlib/fmt/blob/f5e54359df4c26b6230fc61d38aa294581393084/LICENSE.rst'
[library.glpk]
indirect = true
[[library.glpk.license]]
name = 'GPL-3.0-or-later'
url = 'https://www.gnu.org/licenses/gpl-3.0.html'
[library.gmp]
version = '6.3.0'
[[library.gmp.license]]
name = 'LGPL-3.0-only'
url = 'https://www.gnu.org/licenses/lgpl-3.0.html'
[[library.gmp.license]]
name = 'GPL-2.0-only'
url = 'https://www.gnu.org/licenses/old-licenses/gpl-2.0.html'
[library.highs]
indirect = true
[[library.highs.license]]
name = 'MIT'
url = 'https://github.com/ERGO-Code/HiGHS/blob/master/LICENSE.txt'
[library.immer]
version = '0.8.1'
[[library.immer.license]]
name = 'BSL-1.0'
url = 'https://github.com/arximboldi/immer/blob/v0.8.1/LICENSE'
[library.light-gbm]
version = '4.6.0'
[[library.light-gbm.license]]
name = 'MIT'
url = 'https://github.com/microsoft/light-gbm/blob/master/LICENSE'
[library.or-tools]
version = '9.14'
[[library.or-tools.license]]
name = 'Apache-2.0'
url = 'https://github.com/google/or-tools/blob/stable/LICENSE'
[library.osi]
indirect = true
[[library.osi.license]]
name = 'EPL-2.0'
url = 'https://github.com/coin-or/Osi/blob/master/LICENSE'
[library.protobuf]
indirect = true
[[library.protobuf.license]]
name = 'BSD-3-Clause-Clear'
url = 'https://github.com/protocolbuffers/protobuf/blob/main/LICENSE'
[library.range-v3]
version = '0.12.0'
[[library.range-v3.license]]
name = 'BSL-1.0'
url = 'https://github.com/ericniebler/range-v3/blob/0.12.0/LICENSE.txt#L2'
[[library.range-v3.license]]
name = 'MIT'
url = 'https://github.com/ericniebler/range-v3/blob/0.12.0/LICENSE.txt#L85-L104'
[[library.range-v3.license]]
name = '!License-26'
url = 'https://github.com/ericniebler/range-v3/blob/0.12.0/LICENSE.txt#L107'
[[library.range-v3.license]]
name = '!License-27'
url = 'https://github.com/ericniebler/range-v3/blob/0.12.0/LICENSE.txt#L127'
[library.re2]
indirect = true
[[library.re2.license]]
name = 'BSD-Source-Code'
url = 'https://github.com/google/re2/blob/main/LICENSE'
[library.scip]
indirect = true
[[library.scip.license]]
name = 'Apache-2.0'
url = 'https://www.scipopt.org/scip/doc/html/LICENSE.php'
[library.unordered_dense]
version = '4.5.0'
[[library.unordered_dense.license]]
name = 'MIT'
url = 'https://github.com/martinus/unordered_dense/blob/main/LICENSE'
[library.z3]
version = '4.15.0'
[[library.z3.license]]
name = 'MIT'
url = 'https://github.com/Z3Prover/z3/blob/z3-4.13.3/LICENSE.txt'
[library.zlib]
indirect = true
[[library.zlib.license]]
name = 'Zlib'
url = 'https://www.zlib.net/zlib_license.html'
[[license]]
exception = 'LLVM-exception'
name = 'Apache-2.0'
url = 'https://raw.githubusercontent.com/llvm/llvm-project/main/llvm/LICENSE.TXT'