chainsaw is a small and faster drop-in replacement for your copy and paste while attending Codeforces contests. chainsaw is created for increasing competitive programmer productivity by reducing run sample test time especially in real-time contests and the sites kind of lagging due to the traffic.
No matter you are a competitive programmer or a hobby coder, while attending a contest, you always want things to be as convenient as possible.
A contest consists of three phases. In the first phase, you create all your *.cpp
or any other language file. In the second phase, you write algorithms to solve that specific problem.
In the third phase, you compile your program and run all sample tests from website to check whether your code is correct.
The first phase and third phase are just repetitive copy and paste work, but it will waste a lot of time if you just do it by your self, and a little bit annoying. chainsaw can make it automatically, and much faster, saving your time and keeping you from being distracted while copy the test file from website and re-compile your program and check whether it is correct. The difference is most noticeable when you are in rapid fix/debug-edit-recompile cycles.
chainsaw is written in C++17, so if you want to install chainsaw on your machine. you need a very recent version of GCC or Clang. I'm using macOS Monterey 12.1 as a development platform, I'm also testing that in Ubuntu 20.04 LTS, it can also install successfully. In that two environment, you can install chainsaw by the following commands:
git clone https://github.com/Angold-4/chainsaw.git
cd chainsaw
./install.sh
If no error reported, then restart your shell, now you can run chainsaw on your command line.
By default, chainsaw
is installed to /usr/local/bin
A classic way to use chainsaw
- When the contest start
runchainsaw gen CNUMBER
(i.e. 1616) to generate all problems file and sample tests.
- After finishing your problem
runchainsaw runsamples PNUMBER
(i.e. H) to compile your code and check whether it is correct.
One reason is because it simply uses faster algorithms and efficient data structures. The other reason is that the sample tests generator is highly parallelized.
I using curl
, a very simple C++ Library to fetch all html files, and using pthread
to parallize the http Request, which means you can fetch 8 problems's html file just by costing one http request time.
In my machine, the chainsaw gen
command only costs 4
seconds for any kinds of contests in Codeforces, which is superfast.