SHAREOJ GUIDE
使える言語と実行環境の仕様
提出するコードに合わせて、言語と実行環境を選んでください。
提出の基本
ソースコードは1ファイル、最大128 KiB(131,072バイト)です。 通常の問題では標準入力から入力を読み、標準出力へ解答を出力してください。 インタラクティブ問題では問題文の通信手順に従い、必要な箇所で出力をフラッシュしてください。
使える言語は、提出欄の「言語」に表示されているものです。 以下に各言語の実行環境の仕様をまとめます。 コンパイラや実行環境は、提出時に選んだものを使います。
「サンプル検証」ではサンプルケースだけを実行します。 すべての採点用ケースで判定するには「提出する」を押してください。
言語とバージョン
| 言語 | コンパイラ・実行環境 | 主な設定 |
|---|---|---|
| C23 (GCC) | GCC 16.2.0 | -std=c23 -O2 -pipe -lm |
| C23 (Clang) | Clang 23.1.1 | -std=c23 -O2 -pipe -lm |
| C++23 (GCC) | GCC 16.2.0 | -std=c++23 -O2 -pipe |
| C++23 (Clang) | Clang 23.1.1 | -std=c++23 -O2 -pipe -stdlib=libstdc++ |
| Python (CPython 3.14) | CPython 3.14.7 | python3.14 -I -B main.py |
| Python (PyPy 3.11) | PyPy 7.3.23 / Python 3.11 | pypy3 -I -B main.py |
| Python (Codon 0.20) | Codon 0.20.0 | codon build -release main.py |
| Rust (Edition 2024) | Rust 1.98.1 | --edition=2024 -C opt-level=2 |
| C# 14 | .NET 10.0.12 / SDK 10.0.401 | Roslyn、最適化有効、unsafe許可 |
| Java 25 | Temurin 25.0.4.1+1 LTS | javac --release 25、プレビュー機能なし |
| Nim 2.2 | Nim 2.2.10 / GCC 16.2.0 | nim cpp -d:release --opt:speed --mm:refc |
| Go 1.27 | Go 1.27.1 | go build -mod=vendor、CGO無効 |
| Haskell | GHC 9.10.3 / Stackage LTS 24系列 | -O2 -threaded、固定パッケージDB |
| JavaScript / TypeScript (Node.js) | Node.js 24.21.0 LTS / TypeScript 7.0.2 | JSは構文検査、TSは型検査後にJSを実行 |
| JavaScript / TypeScript (Deno) | Deno 2.9.7 / TypeScript 6.0.3 | GitHub公式安定版、依存は事前キャッシュ |
| JavaScript / TypeScript (Bun) | Bun 1.4.2 / TypeScript 7.0.2 | JSは構文検査、TSは型検査後にJSを実行 |
| Ruby (CRuby) | CRuby 4.0.7 | 構文検査後に実行、YJITは有効、ZJITは無効 |
| Ruby (TruffleRuby) | TruffleRuby Community 40.0.0 | 構文検査後に実行 |
| cLay | 20250308-1 / GCC 16.2.0 | C++へ変換後、-std=c++23 -O2 -pipe |
| dc | GNU dc 1.5.2(bc 1.08.2同梱) | dc -f main.dc |
| Nibbles | 1.01+ / GHC 9.10.3 | テキスト形式をHaskellへ変換し、ghc -Oでコンパイル |
| Brainfuck | Tritium(固定リビジョン 525d346c006e) |
8ビットセル、バイト入出力、EOFは-1 |
| Whitespace | whitespacers 1.3.0 | 構文検査後に実行、整数は多倍長 |
CとC++はmain関数、Rustはfn main()を含めてください。
JavaはMainクラスのpublic static void main(String[] args)から実行します。 C#はstatic void Main()またはトップレベルステートメント、Goはpackage mainとfunc main()、Haskellはmain :: IO ()を含めてください。 C#のusingはソースに記述してください。プロジェクトファイルやモジュール定義の提出は不要です。
CPythonとPyPyは実行前に構文検査を行います。 Codonはネイティブコードへコンパイルする環境で、利用できるのはCodonが対応するPythonの機能です。 CPython連携やPyPIパッケージの追加には対応していません。
Nibblesはテキスト形式(.nbl)のソースを提出してください。
Whitespaceでは半角スペース、タブ、改行をそのまま保存します。
エディターのTabキーはタブを、Enterキーは自動字下げせず改行を入力します。
dcとBrainfuckには実行前の構文検査がなく、エラー時の判定は終了コードと出力に従います。
Nibbles、dc、Brainfuck、Whitespaceは、判定コードや生成コードに渡されるファイル引数を無視します。
これらの言語では標準入力を使ってください。
追加ライブラリ
各言語の標準ライブラリに加え、次のライブラリを用意しています。 提出時にパッケージをインストールすることはできません。
C++23(GCC・Clang共通)とcLay
| ライブラリ | バージョン |
|---|---|
| AtCoder Library | 1.6 |
| Boost(ヘッダーのみ) | 1.92.0 |
| testlib | 固定リビジョン 1e4e8a24c79c |
cLayもC++23と同じヘッダーを利用できます。
ACLは#include <atcoder/all>などで読み込めます。 別途リンクが必要なBoostライブラリは対象外です。
testlibを使う判定コードの書き方は、判定方法の設定を確認してください。
CPython・PyPy
| ライブラリ | バージョン | 対応環境 |
|---|---|---|
| more-itertools | 11.1.0 | CPython・PyPy |
| sortedcontainers | 2.4.0 | CPython・PyPy |
| ac-library-python | 固定リビジョン 27fdbb71cd0d |
CPython・PyPy |
| NumPy | 2.5.3 | CPythonのみ |
| SciPy | 1.18.1 | CPythonのみ |
ac-library-pythonはatcoderからインポートします。
Rust
| ライブラリ | バージョン |
|---|---|
| ac-library-rs | 0.2.0 |
| fixedbitset | 0.5.7 |
| itertools | 0.15.0 |
| num | 0.4.3 |
| proconio | 0.6.0(derive有効) |
| rand | 0.10.2 |
| rustc-hash | 2.1.3 |
依存関係は設定済みで、Cargo.tomlの提出は不要です。 たとえばuse ac_library::Dsu;やuse proconio::input;で読み込めます。
C# 14
| ライブラリ | バージョン | 読み込み例 |
|---|---|---|
| MathNet.Numerics | 5.0.0 |
using MathNet.Numerics.LinearAlgebra; |
| ac-library-csharp | 4.1.4 |
using AtCoder; |
ACLのUnion-Findはnew Dsu(n)で作成します。MathNet.Numericsはmanaged providerを使います。
Java 25
| ライブラリ | バージョン | 読み込み例 |
|---|---|---|
| ac-library-java | 2.0.0 |
import ac_library.DSU; |
Nim 2.2
| ライブラリ | バージョン | 読み込み例 |
|---|---|---|
| AC Library | v1.5.1 |
<atcoder/dsu> |
| Arraymancer | 84af537af1bc1f90229fff2b90abf5e5c1b02616 |
import arraymancer |
| Eigen | 3.4.0 |
<Eigen/Dense> |
| Nim-ACL | 0.1.0 |
import atcoder/dsu |
| bigints | ca00f6da386af9ad7e3abf603c0201da6a014477 |
import bigints |
| bignum_chaemon | 1.0.6 |
import bignum |
| boost | 1.88.0 |
<boost/multiprecision/cpp_int.hpp> |
| fftw | 3.3.10 |
<fftw3.h> |
| gmp | 6.3.0 |
import gmp |
| mpfr | 4.2.1 |
<mpfr.h> |
| neo | 0.3.5 |
import neo |
| nimsimd | 1.3.2 |
import nimsimd/sse2 |
| regex | 0.26.3 |
import regex |
| sat | faf1617f44d7632ee9601ebc13887644925dcc01 |
import sat/sat |
Nimのメモリ管理はrefcです。bignumとそのGMPバインディングにはNim 2.2 / refc用の互換パッチを適用しています。 CPU向け機能を提供し、GPUは使用できません。SIMDは実行ホストの対応命令を確認してください。 山括弧の項目はC++ヘッダーで、NimのC++連携から使用します。GMPなどのネイティブライブラリは必要に応じて{.passL: "-lgmp".}のようにリンクしてください。
Go 1.27
| ライブラリ | バージョン | 読み込み例 |
|---|---|---|
| ac-library-go | v0.0.0-20260106091915-2caa314afb5a |
github.com/monkukui/ac-library-go/dsu |
| gods | v1.18.1 |
github.com/emirpasic/gods/sets/treeset |
| golang_org_x_exp | v0.0.0-20260908205506-85c1c2202aba |
golang.org/x/exp/slices |
| gonum | v0.17.0 |
gonum.org/v1/gonum/mat |
| gostl | v1.2.0 |
github.com/liyue201/gostl/ds/queue |
| immutable | v0.4.3 |
github.com/benbjohnson/immutable |
Goは上記のパッケージをimportして使用します。モジュール定義は設定済みで、提出時のダウンロードとCGOは無効です。
Haskell
| ライブラリ | バージョン |
|---|---|
| ac-library-hs | 1.5.3.2 |
| adjunctions | 4.4.4 |
| attoparsec | 0.14.4 |
| bifunctors | 5.6.3 |
| bitvec | 1.1.6.0 |
| comonad | 5.0.10 |
| contravariant | 1.5.6 |
| distributive | 0.6.3 |
| extra | 1.8.1 |
| fgl | 5.8.3.1 |
| flow | 2.0.0.11 |
| free | 5.2 |
| hashable | 1.5.1.0 |
| heaps | 0.4.1 |
| hmatrix | 0.20.2 |
| hmatrix-glpk | 0.19.0.0 |
| hmatrix-gsl | 0.19.0.1 |
| hmatrix-special | 0.19.0.0 |
| ilist | 0.3.1.0 |
| indexed-traversable | 0.1.5 |
| indexed-traversable-instances | 0.1.2.1 |
| integer-logarithms | 1.0.5 |
| kan-extensions | 5.2.8 |
| lens | 5.3.6 |
| linear-base | 0.8.1 |
| list-t | 1.0.5.7 |
| massiv | 1.0.5.0 |
| megaparsec | 9.8.2 |
| monad-memo | 0.5.4 |
| mono-traversable | 1.0.21.0 |
| mutable-containers | 0.3.4.1 |
| mwc-random | 0.15.3.0 |
| parallel | 3.3.0.0 |
| parser-combinators | 1.3.1 |
| primitive | 0.9.1.0 |
| profunctors | 5.6.3 |
| psqueues | 0.2.8.3 |
| QuickCheck | 2.19.0.0 |
| random | 1.3.1 |
| reflection | 2.1.9 |
| regex-tdfa | 1.3.2.6 |
| safe-exceptions | 0.1.7.4 |
| scientific | 0.3.8.1 |
| semialign | 1.4 |
| semigroupoids | 6.0.2 |
| split | 0.2.5.1 |
| strict | 0.5.1 |
| strict-lens | 0.4.1 |
| tagged | 0.8.10 |
| tasty | 1.5.4 |
| tf-random | 0.5 |
| these | 1.2.1 |
| these-lens | 1.0.2 |
| trifecta | 2.1.4 |
| unboxing-vector | 0.2.0.0 |
| unordered-containers | 0.2.21 |
| utility-ht | 0.0.17.2 |
| vector | 0.13.2.0 |
| vector-algorithms | 0.9.1.0 |
| vector-split | 1.0.0.4 |
| vector-stream | 0.1.0.1 |
| vector-th-unbox | 0.2.2 |
| wide-word | 0.1.9.0 |
| witherable | 0.5 |
GHC付属のパッケージ(containers、bytestring、textなど)はGHC 9.10.3の版を使えます。 依存関係は設定済みで、.cabalファイルの提出は不要です。 たとえばimport AtCoder.Dsuやimport qualified Data.Vector.Unboxed as VUで読み込めます。
JavaScriptとTypeScript
Node.jsとBunではnode:fsなどのNode互換API、DenoではDeno.stdinなどのAPIを利用できます。
Node.jsのJavaScriptはrequireとimportの両方に対応します。
TypeScriptは型エラーをCEとして扱います。
Node.jsとBun向けのTypeScriptは、NodeNext形式でJavaScriptにコンパイルします。
| パッケージ | バージョン |
|---|---|
| ac-library-js | 0.1.1 |
| data-structure-typed | 2.6.4 |
| immutable | 5.1.9 |
| lodash | 4.18.1 |
| mathjs | 15.2.0 |
| tstl | 3.0.0 |
たとえばimport { DSU } from "ac-library-js"でACLを利用できます。
Denoでは一覧にある@std/*も固定しており、import { assertEquals } from "@std/assert"のように読み込みます。
@std/encoding/base64などの公開サブパスもキャッシュしています。
提出時の依存ダウンロードや自動インストールはできません。
型定義は@types/node、@types/lodashを用意し、Bun向けには@types/bunも使用します。
Ruby
| ライブラリ | バージョン | 対応環境 |
|---|---|---|
| ac-library-rb | 1.2.0 | CRuby・TruffleRuby |
| bit_utils | 0.1.2 | CRuby・TruffleRuby |
| bitarray | 1.3.2 | CRuby・TruffleRuby |
| faster_prime | 1.0.2 | CRuby・TruffleRuby |
| ffi-geos | 2.5.0 | CRuby・TruffleRuby |
| immutable-ruby | 0.2.0 | CRuby・TruffleRuby |
| rbtree | 0.4.7 | CRuby・TruffleRuby |
| rgl | 0.6.7 | CRuby・TruffleRuby |
| sorted_containers | 1.1.0 | CRuby・TruffleRuby |
| sorted_set | 1.1.0 | CRuby・TruffleRuby |
| z3 | 0.0.20260727 | CRuby・TruffleRuby |
| fast_trie | 0.5.1 | CRubyのみ |
| numo-linalg | 0.1.7 | CRubyのみ |
| numo-narray | 0.9.2.1 | CRubyのみ |
| numo-openblas | 0.5.5 | CRubyのみ |
| or-tools | 0.18.0 | CRubyのみ |
| polars-df | 0.27.1 | CRubyのみ |
ACLのUnion-Findはrequire "ac-library-rb/dsu"で読み込み、AcLibraryRb::DSU.new(n)で作成します。
インタラクティブ問題では、$stdout.sync = trueまたはSTDOUT.flushで出力をフラッシュしてください。 判定コードには入力ファイルなどの引数が渡されるため、引数なしのgetsは標準入力ではなくそのファイルを読みます。 判定コードで標準入力を読むときはSTDIN.getsを使ってください。
実行制限
各テストケースの実行時間制限は問題ページで確認してください。 採点ではプログラムと子プロセスの合計CPU時間を計測し、経過時間にも別の上限を設けています。
メモリ上限は512 MiBで、実行環境やライブラリが使うメモリも含みます。 コンパイル処理は別枠で、CPU時間30秒、経過時間40秒、メモリ1 GiBが上限です。
NumPyやSciPyが使う数値計算ライブラリの内部スレッド数は1に設定しています。 実行中の外部ネットワーク接続は利用できません。
コンテストでの得点や誤答ペナルティについては、コンテストのルールを確認してください。