basic data structures and algorithms in cpp