1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//! # Competitive Programming Library
//!
//! This library aims to provide a set of algorithm, data structure and tools for competitive programming.
//!
//! There are several philosophies behind this library:
//! - **Simple**: The library should be simple and fast to use, as time is precious in competitive programming.
//!     - Do not overuse Option, Result to provide unnecessary boundary checks (panic is fine).
//! - **Extensible**: Most of algorithms and data structures should not be limited to a specific type.
//!     - Design genetic traits to allow different types to be used (including potentially user-defined types like matrices).
//! - **Efficient**: The library should be efficient enough for competitive programming problems.
//! - **Comprehensive**: The library should be readable and understandable for educational purposes.
//! - **Tested**: The library should be tested with some problems from online judges to ensure its correctness.
//! - **Indexed from _1_**: The library should use 1-based index for most of the algorithms and data structures while leaving the index 0 for buffer manipulation.
//!     - This is because most of the problem use 1-based index.
//!     - Index 0 should default be set to ZERO.
//!
//!
//! ## Examples
//!
//! ```no_run
//! use cplit::scanln;
//!
//! fn main() {
//!     let (a, b): (usize, usize);
//!     scanln!(a, b);
//!     println!("{}", a + b);
//! }
//! ```
#![allow(clippy::needless_doctest_main)]

pub mod data_structure;
pub mod general;
pub mod graph;
pub mod num;
pub mod utils;

#[macro_use]
mod macros;