hotaruの蛍雪日記

競プロとゲームをしています

Codeforcesでac-libraryを使う - C++20かGNU G++17 9.2.0を選ぼう

AC(AtCoder) Library Document (production) AtCoderが提供する競技プログラミングライブラリac-libraryを使用したコードをCodeforcesに提出する方法を書く。

2021年9月5日時点の情報です。今後Codeforcesの仕様変更で役に立たなくなるかもしれません。
2021年10月16日 追加された言語C++20が使用できることを追記。

前提条件

  • ac-libraryをダウンロードしている
  • python3.5 or laterをインストールしている

ライブラリを展開する

これをやります。1

他のジャッジへの提出方法

expander.pyというスクリプト(python3.5 or later)を用意しています。 python3 expander.py main.cppと実行するとcombined.cppが生成され、これは他のオンラインジャッジに提出できる形になっています。

テストはしていますが、サポート保証外です。

2021年9月5日引用 https://atcoder.github.io/ac-library/production/document_ja/appendix.html

提出する

言語選択ではGNU G++20 11.2.0 (64 bit, winlibs)またはGNU G++17 9.2.0 (64 bit, msys 2)を選んで提出します。

次の言語ではコンパイルエラーが出て提出できません。

  • GNU GCC C11 5.1.0
  • Clang++17 Diagnostics
  • GNU G++14 6.4.0
  • GNU G++17 7.3.0
  • Microsoft Visual C++ 2017

これらの言語は動作環境を満たしません。例えば__int128が使えないようです。

動作環境

  • ATCODER_で始まる名前のマクロを使わないでください。
  • 多くの環境で動くように作っていますが、C++標準からある程度の拡張機能を要求します。具体的には以下のことを仮定します。
    • __int128 / unsigned __int128(g++, clang++)_mul128 / _umul128(Visual Studio) が使えること
    • __builtin_(ctz/ctzll/clz/clzll/popcount)(g++, clang++)_BitScan(Forward/Reverse)(Visual Studio) が使えること
    • char / short / int / ll8 / 16 / 32 / 64 bit、またそのunsigned型(およびsigned char)も同じbit長
    • 💻 符号付き整数型が2の補数表現であることを規定

2021年9月5日引用 https://atcoder.github.io/ac-library/production/document_ja/appendix.html

コンテスト本番前にCustom Testでac-libraryを使えるか試すとよいでしょう。 Custom Test - Codeforces

試すときのコードは使用例のコードを使うとよいです。 https://atcoder.github.io/ac-library/production/document_ja/modint.html

検索用キーワード:コドフォ ACL how to submit。


  1. ちなみにexpander.pyを実行するときは、カレントディレクトリをexpander.pyがあるディレクトリに移動する必要があります。そうしないとエラーでます。