外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

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に設定しています。 実行中の外部ネットワーク接続は利用できません。

コンテストでの得点や誤答ペナルティについては、コンテストのルールを確認してください。