競技プログラミング用 ストレステストツール
git clone https://github.com/xryuseix/CPSTT
cd CPSTT
cargo install --path .
cd test # または以下に記す設定を行う(推奨)
cpstt # 実行
test ディレクトリを参考に,以下のファイル/ディレクトリを作成してください.なお,cpstt_out/
内のディレクトリとtestcase/
は自動で生成されます.
/path/to/YourCodingDirectory
|--cpstt_out/
| |--bin/
| |--smart/
| |--stupid/
|--generator.cpp
|--settings.toml
|--smart.cpp
|--stupid.cpp
|--testcase/
- テストケースを作成するプログラム
ofs
に出力した内容がそのままテストケースとなる.init
関数を除いて,icpc-jag/rimeと同じように記述可能- 以下のように記述すれば良い
#include <fstream>
#include <iostream>
using namespace std;
string root_path = "";
void init(int argc, char *argv[]) {
srand((unsigned)(time(NULL)));
for (int i = 1; i < argc; i++) {
root_path += std::string(argv[i]);
}
}
// aとbをファイルストリームに出力する
// ファイル名は prefix_num.in (ex: 00_sample_00.in)
void output(int a, int b, const string &prefix, const int num) {
char name[100];
sprintf(name, "%s/testcase/%s_%02d.in", root_path.c_str(), prefix.c_str(),
num);
ofstream ofs(name);
/* ここから書き換える */
ofs << a << " " << b << endl;
/* ここまで */
ofs.close();
}
int main(int argc, char *argv[]) {
init(argc, argv);
/* ここから書き換える */
output(0, 0, "0_sample", 0);
output(0, 1, "0_sample", 1);
output(1, 0, "0_sample", 2);
output(1, 1, "0_sample", 3);
/* ここまで */
}
- 競技プログラミングの問題を解くプログラムのここに記述する
stupid.cpp
と入れ替えても良いが,名前の通り効率の良いプログラムを記載することを推奨する
- 競技プログラミングの問題を解くプログラムのここに記述する
smart.cpp
と入れ替えても良いが,名前の通り効率の悪いプログラムを記載することを推奨する
- 本プログラムの設定ファイル
- 使い方はコメントの通り
[execution]
# ユーザプログラム実行結果の最大表示文字数
max_output_len = 200
# ユーザプログラム実行結果の最大表示行数
max_output_line = 4
# ユーザプログラムのTime Limit(ms)
time_limit = 2200
# 実行形式ファイルの拡張子
bin_extension = "out"
[logging]
# ユーザプログラム実行結果の表示有無
dump_exe_result = false
smart.cpp
と stupid.cpp
が出力した実行結果と,生成したバイナリファイルを保存する
smart.cpp
が出力した実行結果を保存する
stupid.cpp
が出力した実行結果を保存する
stupid.cpp
, smart.cpp
, generator.cpp
をコンパイルしたバイナリファイル保存する
generator.cpp
の出力先 (テストケースの保存先)