From 1aa58a1a679d397cdffff8824fb2fe517c254d64 Mon Sep 17 00:00:00 2001 From: Tamio Vesa Nakajima Date: Thu, 17 May 2018 00:10:04 +0100 Subject: [PATCH] first commit --- README.md | 46 +++++++++++++++++++ build_test.sh | 47 ++++++++++++++++++++ eval/eval.bin | Bin 0 -> 45496 bytes eval/eval.cpp | 22 ++++++++++ eval/makefile | 2 + incf/00 | 1 + incf/01 | 1 + incf/02 | 1 + ingen/ingen.bin | Bin 0 -> 36052 bytes ingen/ingen.cpp | 14 ++++++ ingen/makefile | 2 + lib.sh | 24 ++++++++++ okgen/makefile | 2 + okgen/okgen.bin | Bin 0 -> 36280 bytes okgen/okgen.cpp | 11 +++++ problemname | 1 + run.sh | 107 +++++++++++++++++++++++++++++++++++++++++++++ src/ok.cpp | 10 +++++ src/tle.cpp | 2 + src/wa.cpp | 4 ++ tests/aplusb-00.in | 1 + tests/aplusb-00.ok | 2 + tests/aplusb-01.in | 1 + tests/aplusb-01.ok | 2 + tests/aplusb-02.in | 1 + tests/aplusb-02.ok | 2 + tests/aplusb-03.in | 1 + tests/aplusb-03.ok | 2 + tests/aplusb-04.in | 1 + tests/aplusb-04.ok | 2 + tests/aplusb-05.in | 1 + tests/aplusb-05.ok | 2 + tests/aplusb-06.in | 1 + tests/aplusb-06.ok | 2 + tests/aplusb-07.in | 1 + tests/aplusb-07.ok | 2 + tests/aplusb-08.in | 1 + tests/aplusb-08.ok | 2 + tests/aplusb-09.in | 1 + tests/aplusb-09.ok | 2 + tests/aplusb-10.in | 1 + tests/aplusb-10.ok | 2 + tests/aplusb-11.in | 1 + tests/aplusb-11.ok | 2 + tests/aplusb-12.in | 1 + tests/aplusb-12.ok | 2 + tests/aplusb-13.in | 1 + tests/aplusb-13.ok | 2 + tests/aplusb-14.in | 1 + tests/aplusb-14.ok | 2 + tests/aplusb-15.in | 1 + tests/aplusb-15.ok | 2 + tests/aplusb-16.in | 1 + tests/aplusb-16.ok | 2 + tests/aplusb-17.in | 1 + tests/aplusb-17.ok | 2 + tests/aplusb-18.in | 1 + tests/aplusb-18.ok | 2 + tests/aplusb-19.in | 1 + tests/aplusb-19.ok | 2 + timelimit | 1 + 61 files changed, 358 insertions(+) create mode 100644 README.md create mode 100755 build_test.sh create mode 100755 eval/eval.bin create mode 100644 eval/eval.cpp create mode 100644 eval/makefile create mode 100644 incf/00 create mode 100644 incf/01 create mode 100644 incf/02 create mode 100755 ingen/ingen.bin create mode 100644 ingen/ingen.cpp create mode 100644 ingen/makefile create mode 100644 lib.sh create mode 100644 okgen/makefile create mode 100755 okgen/okgen.bin create mode 100644 okgen/okgen.cpp create mode 100644 problemname create mode 100755 run.sh create mode 100644 src/ok.cpp create mode 100644 src/tle.cpp create mode 100644 src/wa.cpp create mode 100644 tests/aplusb-00.in create mode 100644 tests/aplusb-00.ok create mode 100644 tests/aplusb-01.in create mode 100644 tests/aplusb-01.ok create mode 100644 tests/aplusb-02.in create mode 100644 tests/aplusb-02.ok create mode 100644 tests/aplusb-03.in create mode 100644 tests/aplusb-03.ok create mode 100644 tests/aplusb-04.in create mode 100644 tests/aplusb-04.ok create mode 100644 tests/aplusb-05.in create mode 100644 tests/aplusb-05.ok create mode 100644 tests/aplusb-06.in create mode 100644 tests/aplusb-06.ok create mode 100644 tests/aplusb-07.in create mode 100644 tests/aplusb-07.ok create mode 100644 tests/aplusb-08.in create mode 100644 tests/aplusb-08.ok create mode 100644 tests/aplusb-09.in create mode 100644 tests/aplusb-09.ok create mode 100644 tests/aplusb-10.in create mode 100644 tests/aplusb-10.ok create mode 100644 tests/aplusb-11.in create mode 100644 tests/aplusb-11.ok create mode 100644 tests/aplusb-12.in create mode 100644 tests/aplusb-12.ok create mode 100644 tests/aplusb-13.in create mode 100644 tests/aplusb-13.ok create mode 100644 tests/aplusb-14.in create mode 100644 tests/aplusb-14.ok create mode 100644 tests/aplusb-15.in create mode 100644 tests/aplusb-15.ok create mode 100644 tests/aplusb-16.in create mode 100644 tests/aplusb-16.ok create mode 100644 tests/aplusb-17.in create mode 100644 tests/aplusb-17.ok create mode 100644 tests/aplusb-18.in create mode 100644 tests/aplusb-18.ok create mode 100644 tests/aplusb-19.in create mode 100644 tests/aplusb-19.ok create mode 100644 timelimit diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb0073f --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +Hello. +This is a bundle of scripts used to prepare competitive programming problems +The files here have the following structure: +* README.md +* problemname +* timelimit +* lib.sh +* build\_test.sh +* run.sh +* ingen + * makefile + * ingen.bin +* incf +* okgen + * makefile + * okgen.bin +* eval + * makefile + * eval.bin +* tests + * ... +* src + * ... +* stage + +File descriptions: + +README.md | This readme +--------- | ----------- +problemname | A file that should contain exactly the problem name +timelimit | A file that should contain the time limit, in seconds +lib.sh | A bash library, used for the scripts in this bundle +build\_test.sh | ./build\_test.sh *xxx* will build *problemname*-*xxx*.in with ingen/ingen.bin with configuration incf/*xxx* +run.sh | ./run.sh *xxx* will run src/*xxx* on all the tests +ingen | Contains files related to input generation +ingen/makefile | A file that needs to make the input generator, ingen/ingen.bin +ingen/ingen.bin | The input generator. When run, a configuration file *problemname*.cf might be made available to it (depending on whether an appropriate file exists in incf). The input should be written to a file *problemname*.in. +incf | Holds various configuration files +okgen | Contains files related to ok generation +okgen/makefile | A file that needs to make the ok generator, okgen/okgen.bin +okgen/okgen.bin | A file that needs to make ok's. It will read the input from *problemname*.in and write the ok to *problemname*.ok +eval | Contains files related to evaluation +eval/makefile | A file that needs to make the evaluator, eval/eval.bin +eval/eval.bin | A file that evaluates. It will read the input file from *problemname*.in, the output file from *problemname*.out, the ok file from *problemname*.ok. It will write the score to *stdout* and the evaluation message to *stderr*. +tests | Holds tests +stage | Where evaluation happens diff --git a/build_test.sh b/build_test.sh new file mode 100755 index 0000000..e5e297c --- /dev/null +++ b/build_test.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# This builds test $problemname.$1 using ingen, incf/$1 and okgen +# Tamio-Vesa Nakajima + +# include the library +source lib.sh + +# Get problem name +problemname=`cat problemname` + +################# +# Build input: +################# + +# Build input generator +try "cd ingen && make -s && cd .." "input generator build fail" + +# Copy ingen/ingen.bin and incf/$1 into stage, building an empty cf if none exists +cp ingen/ingen.bin stage/$problemname.bin +maybecp incf/$1 stage/$problemname.cf + +# Build input +try "cd stage && ./$problemname.bin > ../tests/$problemname-$1.in && cd .." "input generation fail" + +# Clean stage +rm stage/* + +################### +# Build ok +################### + +# Build ok generator +try "cd okgen && make -s && cd .." "ok generator build fil" + +# Copy ok generator and input into stage +cp okgen/okgen.bin stage/$problemname.bin +cp tests/$problemname-$1.in stage/$problemname.in + +# Build ok +try "cd stage && ./$problemname.bin && cd .." "ok generation fail" + +# Copy ok from stage into tests +cp stage/$problemname.out tests/$problemname-$1.ok + +# Clean stage +rm stage/* diff --git a/eval/eval.bin b/eval/eval.bin new file mode 100755 index 0000000000000000000000000000000000000000..c3c63e44b334432af0adffdc707f0829589fc1d6 GIT binary patch literal 45496 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 +#include +#include +using namespace std; + +int main(){ + ifstream fout("aplusb.out"); + ifstream fok("aplusb.ok"); + + int points = 0; + fok >> points; + + string s1, s2; + while(fok >> s1){ + if(!bool(fout >> s2) || s1 != s2){ + cerr << "WA" << endl; + cout << 0 << endl; + return 0; } } + + cerr << "OK" << endl; + cout << points << endl; + return 0; } diff --git a/eval/makefile b/eval/makefile new file mode 100644 index 0000000..2abe5c6 --- /dev/null +++ b/eval/makefile @@ -0,0 +1,2 @@ +../eval/eval.bin: + g++ eval.cpp -std=c++11 -o ../eval/eval.bin diff --git a/incf/00 b/incf/00 new file mode 100644 index 0000000..573541a --- /dev/null +++ b/incf/00 @@ -0,0 +1 @@ +0 diff --git a/incf/01 b/incf/01 new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/incf/01 @@ -0,0 +1 @@ +1 diff --git a/incf/02 b/incf/02 new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/incf/02 @@ -0,0 +1 @@ +2 diff --git a/ingen/ingen.bin b/ingen/ingen.bin new file mode 100755 index 0000000000000000000000000000000000000000..361737030a2442c2d336afc83be62b375904b98c GIT binary patch literal 36052 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 +#include +using namespace std; + +int main(){ + ifstream f("aplusb.cf"); + if(!f){ + srand(time(nullptr)); + cout << rand() << ' ' << rand() << endl; } + else { + int x; + f >> x; + cout << x << ' ' << x << endl; } + return 0; } diff --git a/ingen/makefile b/ingen/makefile new file mode 100644 index 0000000..ae4ea9c --- /dev/null +++ b/ingen/makefile @@ -0,0 +1,2 @@ +../ingen/ingen.bin: + g++ ingen.cpp -std=c++11 -o ../ingen/ingen.bin diff --git a/lib.sh b/lib.sh new file mode 100644 index 0000000..7367335 --- /dev/null +++ b/lib.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# +# Bash library for this project +# Tamio-Vesa Nakajima + +# Tries to execute $1 ; if this succeeds, do nothing +# otherwise, output $2 +try () { + if eval $1 ; then + : + else + echo $2 + exit 1 + fi +} + +# Tries to copy $1 to $2 ; if $1 doesn't exist, creates an empty $2 +maybecp () { + if [ -f $1 ] ; then + cp $1 $2 + else + touch $2 + fi +} diff --git a/okgen/makefile b/okgen/makefile new file mode 100644 index 0000000..0bc29f0 --- /dev/null +++ b/okgen/makefile @@ -0,0 +1,2 @@ +../okgen/okgen.bin: + g++ okgen.cpp -std=c++11 -o ../okgen/okgen.bin diff --git a/okgen/okgen.bin b/okgen/okgen.bin new file mode 100755 index 0000000000000000000000000000000000000000..4232cb29128e58695287a15be935305efe542879 GIT binary patch literal 36280 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 +using namespace std; + +int main(){ + ifstream f("aplusb.in"); + ofstream g("aplusb.out"); + long long x, y; + f >> x >> y; + g << 5 << endl; + g << x+y << endl; + return 0; } diff --git a/problemname b/problemname new file mode 100644 index 0000000..35c8ea6 --- /dev/null +++ b/problemname @@ -0,0 +1 @@ +aplusb diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..8f84d26 --- /dev/null +++ b/run.sh @@ -0,0 +1,107 @@ +#!/bin/bash +# +# Runs $1.cpp on all tests +# Tamio-Vesa Nakajima + +# include the library +source lib.sh + +# Get an appropriate timeout command +timeoutCommand=timeout + +if [[ "$OSTYPE" == "darwin"* ]] ; then + timeoutCommand=gtimeout +fi + +# Check if timoutCommand is valid +#try "hash $timeoutCommand$" "timeout fail" + +# Get the problem name and the time limit +try "problemname=`cat problemname`" "no problemname file" +try "timelimit=`cat timelimit`" "no timelimit file" + +# Make the evaluator +try "cd eval && make -s && cd .." "evaluator build fail" + +# Copy the evaluator into the stage +cp eval/eval.bin stage/eval.bin + +# Copy the source into the stage +try "cp src/$1 stage/$problemname.cpp" "source file missing" + +# Create a temporary file to hold the problem binary +binary=`mktemp` + +# Build the source +try "g++ stage/$problemname.cpp -std=c++11 -o $binary -O2" "Compile error" + +# Make a temporary file to hold the table: +table=`mktemp` + +# $table holds the score table +echo Test Message Time Points > $table + +# Find names of all inputs +tests=`ls -1 tests | grep .in | awk -F '.' '{print $1}'` + +# For all tests +for testname in $tests ; do + # Output an appropriate messgae + echo -en "Doing $testname\r" + + # Clean the stage + rm stage/* + + # Copy the executable into the stage + cp $binary stage/$problemname.bin + + # Copy the input into the stage + cp tests/$testname.in stage/$problemname.in + + # This string runs the competitor's executable + runExec="./$problemname.bin > /dev/null 2> /dev/null" + + # This string runs the competitors executable with an appropriate timeout + runExecWithTimeout="$timeoutCommand $timelimit $runExec" + + # Run the competitors executable with a timeout, and store the time used in timeUsed + timeUsed=$(cd stage && { time $runExecWithTimeout ; } 2>&1 >/dev/null \ + | head -2 \ + | awk -F ' ' '{print $2}' \ + | awk -F 'm' '{print $2}' \ + | awk -F 's' '{print $1}' && cd ..) + + if (( $(echo "$timeUsed > $timelimit" | bc -l))) ; then + # Print that this testcase resulted in a TLE + echo $testname TLE $timeUsed 0 >> $table + else + # Copy the evaluator into the stage + cp eval/eval.bin stage/eval.bin + + # Copy the ok file into the stage + cp tests/$testname.ok stage/$problemname.ok + + # Create temporary files to hold the points and the eval message + points=`mktemp` + message=`mktemp` + + # Enter the stage and evaluate, storing the results in $points and $message + try "cd stage && ./eval.bin > $points 2> $message && cd .." "eval error" + + # Add the relevant information into the table + echo $testname `cat $message` $timeUsed `cat $points` >> $table + fi +done + +# Output the table +column -t $table + +# Calculate the score +echo SCORE: `awk -F ' ' '$1 != "Test" {sum += 0 $4} END {print sum}' $table` + +# Clear the temporary files +rm $table +rm $binary + +# And the stage +rm stage/* diff --git a/src/ok.cpp b/src/ok.cpp new file mode 100644 index 0000000..c88be1c --- /dev/null +++ b/src/ok.cpp @@ -0,0 +1,10 @@ +#include +using namespace std; + +int main(){ + ifstream f("aplusb.in"); + ofstream g("aplusb.out"); + long long x, y; + f >> x >> y; + g << x+y << endl; + return 0; } diff --git a/src/tle.cpp b/src/tle.cpp new file mode 100644 index 0000000..c55d503 --- /dev/null +++ b/src/tle.cpp @@ -0,0 +1,2 @@ +int main(){ + while(true){} } diff --git a/src/wa.cpp b/src/wa.cpp new file mode 100644 index 0000000..59c52f1 --- /dev/null +++ b/src/wa.cpp @@ -0,0 +1,4 @@ +#include +using namespace std; + +int main(){} diff --git a/tests/aplusb-00.in b/tests/aplusb-00.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-00.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-00.ok b/tests/aplusb-00.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-00.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-01.in b/tests/aplusb-01.in new file mode 100644 index 0000000..2fb73a0 --- /dev/null +++ b/tests/aplusb-01.in @@ -0,0 +1 @@ +1 1 diff --git a/tests/aplusb-01.ok b/tests/aplusb-01.ok new file mode 100644 index 0000000..47586a8 --- /dev/null +++ b/tests/aplusb-01.ok @@ -0,0 +1,2 @@ +5 +2 diff --git a/tests/aplusb-02.in b/tests/aplusb-02.in new file mode 100644 index 0000000..78454aa --- /dev/null +++ b/tests/aplusb-02.in @@ -0,0 +1 @@ +2 2 diff --git a/tests/aplusb-02.ok b/tests/aplusb-02.ok new file mode 100644 index 0000000..b5104f3 --- /dev/null +++ b/tests/aplusb-02.ok @@ -0,0 +1,2 @@ +5 +4 diff --git a/tests/aplusb-03.in b/tests/aplusb-03.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-03.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-03.ok b/tests/aplusb-03.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-03.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-04.in b/tests/aplusb-04.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-04.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-04.ok b/tests/aplusb-04.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-04.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-05.in b/tests/aplusb-05.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-05.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-05.ok b/tests/aplusb-05.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-05.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-06.in b/tests/aplusb-06.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-06.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-06.ok b/tests/aplusb-06.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-06.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-07.in b/tests/aplusb-07.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-07.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-07.ok b/tests/aplusb-07.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-07.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-08.in b/tests/aplusb-08.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-08.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-08.ok b/tests/aplusb-08.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-08.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-09.in b/tests/aplusb-09.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-09.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-09.ok b/tests/aplusb-09.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-09.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-10.in b/tests/aplusb-10.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-10.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-10.ok b/tests/aplusb-10.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-10.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-11.in b/tests/aplusb-11.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-11.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-11.ok b/tests/aplusb-11.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-11.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-12.in b/tests/aplusb-12.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-12.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-12.ok b/tests/aplusb-12.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-12.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-13.in b/tests/aplusb-13.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-13.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-13.ok b/tests/aplusb-13.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-13.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-14.in b/tests/aplusb-14.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-14.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-14.ok b/tests/aplusb-14.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-14.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-15.in b/tests/aplusb-15.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-15.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-15.ok b/tests/aplusb-15.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-15.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-16.in b/tests/aplusb-16.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-16.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-16.ok b/tests/aplusb-16.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-16.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-17.in b/tests/aplusb-17.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-17.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-17.ok b/tests/aplusb-17.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-17.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-18.in b/tests/aplusb-18.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-18.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-18.ok b/tests/aplusb-18.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-18.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/tests/aplusb-19.in b/tests/aplusb-19.in new file mode 100644 index 0000000..b748e2d --- /dev/null +++ b/tests/aplusb-19.in @@ -0,0 +1 @@ +0 0 diff --git a/tests/aplusb-19.ok b/tests/aplusb-19.ok new file mode 100644 index 0000000..cb6e5ed --- /dev/null +++ b/tests/aplusb-19.ok @@ -0,0 +1,2 @@ +5 +0 diff --git a/timelimit b/timelimit new file mode 100644 index 0000000..49d5957 --- /dev/null +++ b/timelimit @@ -0,0 +1 @@ +0.1