こんにちは。PythonParrotです。
今回はRustで競技プログラミングをやったときにやっておくと良さそうなこととか、覚えておいたほうが良いことを話していきます。
AtcoderのRustのバージョンは1.42.0
Rustの2022/3/8時点での最新リリースは1.59.0。それに対してAtcoderのRustのバージョンは1.42.0。
そのため、1.42.0以降で実装された機能とかを手元でうっかり使ってしまってCEになるということが稀に良くある。
解決策としては以下の通り。
- 手元でも1.42.0を使う
- Editionを2018にしておく
Editionについては以下参照。
手元で指定したバージョンのRustを入れる話は以下を参照
後で紹介するCargo Atcoderを使うとそれがやりやすいのでオススメ。
Cargo Atcoder
Atcoderに向けたCargo subcommand。
コマンドで「プロジェクトの作成」や「提出」ができるようになる。
設定
インストール方法や使い方などはReadmeに譲るとして、ここでは自分の設定を晒していく。
# 変更点だけ。
# dependencies added to new project
[dependencies]
# proconioを依存関係として追加しておく
proconio = "*"
# competitive = { git = "https://github.com/tanakh/competitive-rs.git" }
[project]
# to create `rust-toolchain` file, uncomment this line.
# AtcoderのRustのバージョンが1.42.0なのでそれに合わせる形に。
rustc_version = "1.42.0"
# source code template
# ソースコードテンプレートをinputの用意がすでにできている状態に置き換えておく
template = """
use proconio::input;
fn main() {
input!{
};
}
"""
ちなみに、設定ファイルは以下のディレクトリ以下のcargo-atcoder.toml
ファイルである。
proconio
競技プログラミングのための入力用クレート。
input!
マクロを使うことで入力部分を楽に書ける。
std::collectionsの把握
C++ほどとは言えないが、一通り揃ってる。
BTreeSet を MultiSet にするテク
知り合いから教えてもらったテクで、(要素, setのサイズとか適当な値)とかにする。
こんな感じ。