Algorithms used in Competitive Programming
# ACM-ICPC Algorithms

### Introduction to ACM-ICPC
ACM International Collegiate Programming Contest (abbreviated as ACM-ICPC or ICPC) is an annual multi-tiered competitive programming competition among the universities of the world.

Alternately, we can say that the [International Collegiate Programming Contest](https://en.wikipedia.org/wiki/ACM_International_Collegiate_Programming_Contest) is an algorithmic programming contest for college students.
- Teams of three, representing their university, work to solve real-world problems, fostering collaboration, creativity, innovation, and the ability to perform under pressure.
- Through training and competition, teams challenge each other to raise the bar on what could be done.
- Quite simply, it is the oldest, largest, and most prestigious programming contest in the world.

### Purpose of ACM-ICPC Algorithms
ACM-ICPC Algorithms is a collection of important algorithms and data structures used to solve questions in this worldwide olympiad. It aims to provide solutions in various languages as per [ICPC 2018 WF](https://icpc.baylor.edu/worldfinals/programming-environment), including:
-  C
-  C++
-  Java
-  Python (2 & 3)
-  Kotlin
##### For more information, visit: **Official Website of [ICPC](https://icpc.baylor.edu/)**

#### If you wish to contribute, please refer to [the contributor guidelines](https://github.com/matthewsamuel95/ACM-ICPC-Algorithms/blob/master/CONTRIBUTING.md).

**Table of Contents :**

* [Breadth First Search](/BFS)
* [Branch And Bound](/Branch%20and%20Bound)
  * [0/1 Knapsack](/Branch%20and%20Bound/0_1%20Knapsack)
* [Binary Search Tree](/BST)
* [Backtracking](/BackTracking)
   * [Hamilton Path](/BackTracking/Hamilton%20Path)
   * [Knights Tour](/BackTracking/KnightsTour)
   * [NQueens](/BackTracking/NQueens)
   * [Rat In A Maze](/BackTracking/RatInAMaze)
   * [Sudoku Algorithm](/BackTracking/SudokuAlgorithm)
* [Depth First Search](/DFS)
* [Bit Manipulation](/BitManipulation)
   * [Checking Power of 2](/BitManipulation/Checking_power_of_2)
   * [Nth Magic No](/BitManipulation/Nth_magic_number)
   * [Set kth Bit](/BitManipulation/Set_kth_bit)
   * [Sparse Number](/BitManipulation/Sparse_number)
   * [Count Ones](/BitManipulation/count_ones)
   * [Divide Integers](/BitManipulation/divide_integers)
   * [Even Odd](/BitManipulation/even_odd)
   * [Print Subsets](/BitManipulation/print_subsets)
   * [Reverse Bits](/BitManipulation/reverse_bits)
   * [Single Number](/BitManipulation/single_number)
   * [Swap Bits](/BitManipulation/swap_bits)
* [Data Structures](/Data%20Structures)
   * [Disjoint Set](/Data%20Structures/disjointset)
   * [Doubly Linked List](/Data%20Structures/DoublyLinkedList)
   * [Fenwick Tree](/Data%20Structures/Fenwick_tree)
   * [LCA](/Data%20Structures/LCA)
   * [Linked List](/Data%20Structures/Linked%20List)
   * [Queue](/Data%20Structures/Queue)
   * [Queue From Stack Or Stack From Queue](/Data%20Structures/QueueFromStack_StackFromQueue)
   * [Red Black Tree](/Data%20Structures/Red%20Black%20Tree)
   * [Singly Linked List](/Data%20Structures/SinglyLinkedList)
   * [Stack](/Data%20Structures/Stack)
   * [Segment Tree](/Data%20Structures/Segment%20Tree)
   * [Treap](/Data%20Structures/Treap)
   * [Trie](/Data%20Structures/Trie)
* [Dynamic Programming](/DP)
   * [Coin Change](/DP/Coin%20Change%20Problem)
   * [Collect Maximum Points](/DP/Collect_Max_Points)
   * [Edit Distance](/DP/EditDistance)
   * [Egg Dropping Puzzle](/DP/Egg%20Dropping%20Puzzle)
   * [Fibonacci Series](/DP/Fibonacci)
   * [Floyd Warshall Algorithm](/DP/Floyd%20Warshall%20Algorithm)
   * [Game Of Sum](/DP/game_of_sum)
   * [Knapsack](/DP/Knapsack)
   * [Longest Palindrome Substring](/DP/Longest%20Palindrome%20Substring)
   * [Longest Common Increasing Subsequence](/DP/LCIS)
   * [Longest Common Subsequence](/DP/LongestCommonSubsequence)
   * [Longest Increasing Subsequence](/DP/LongestIncreasingSubsequence)
   * [Longest Repeated Subsequence](/DP/Longest%20Repeated%20Subsequence)
   * [Matrix Chain Multiplication](/DP/MatrixChain_multiplication)
   * [Max Sum Increasing Subsequence](/DP/Maximum%20Sum%20Increasing%20Subsequence)
   * [Minimum Path Sum](/DP/MinimumPathSum)
   * [Number Of Islands](/DP/NumberOfIslands)
   * [Partition Problem](/DP/PartitionProblem)
   * [Print Neatly](/DP/PrintNeatly)
   * [Recursive Staircase Problem](/DP/Recursive_Staircase_Problem)
   * [Shortest Uncommon Subsequence](/DP/ShortestUncommonSubsequence)
   * [Subset Sum](/DP/subset%20sum%20problem)
   * [Longest Bitonic SubSequence](/DP/LongestBitonicSubseq)
   * [Tiling Problem](/DP/Tiling%20Problem)
* [Graph Algorithms](/Graph)
   * [Articulation Points](/Graph/Articulation_points)
   * [Bellman Ford SSSP](/Graph/BellmanFordSSSP)
   * [Bridges](/Graph/bridges)
   * [Centroid Decomposition](/Graph/Centroid%20Decomposition)
   * [Detect Cycle](/Graph/Detect_Cycle)
   * [Dials Algorithm](/Graph/DialsAlgorithm)
   * [Dijkstras SPT](/Graph/DijkstrasSPT)
   * [Euler Path](/Graph/EulerPath)
   * [Floyd Warshall](/Graph/FloydWarshall)
   * [Graph Coloring](/Graph/Graph_m_Coloring)
   * [Johnson's Algorithm](/Graph/Johnson'sAlgorithm)
   * [Kruskal MST](/Graph/KruskalsMST)
   * [Prims MST](/Graph/PrimsMST)
   * [Sack](/Graph/Sack)
   * [SPFA SSSP](/Graph/SPFA%20SSSP)
   * [Targan SCC](/Graph/TarganSCC)
   * [Topo Sort](/Graph/TopoSort)
   * [Fenwick Tree](/Graph/FenwickTree)
   * [Weighted Quick Union](/Graph/Weighted_Quick_Union)
* [Greedy Algorithms](/Greedy)
   * [Activity Selection](/Greedy/ActivitySelection)
   * [Containership](/Greedy/ContainerShip)
   * [Equalizing Bit Strings](/Greedy/EqualizingBitStrings)
   * [Gas Station](/Greedy/Gas%20Station)
   * [Greedy Graph Coloring](/Greedy/Greedy_Graph_Coloring)
   * [Huffman Coding](/Greedy/Huffman%20coding)
   * [Knapsack](/Greedy/Knapsack)
   * [Kruskal's Minimum Spanning Tree](/Greedy/Kruskal’sMinimumSpanningTree)
   * [Maximum Increasing Subarray](/Greedy/MaximumIncreasingSubarray)
   * [Minimum Coins](/Greedy/MinimumCoins)
   * [Odd Sum Subsequence](/Greedy/OddSumSubsequence)
* [Hashing Algorithms](/Hashing)
   * [2 Sum](/Hashing/2_Sum)
   * [3 Sum](/Hashing/3_Sum)
   * [4 Sum](/Hashing/4_Sum)
* [Machine Learning](/MachineLearning)
   * [Perceptron](/MachineLearning/Perceptron)
* [Mathematical Algorithms](/Math)
   * [3 Sum square complexity](/Math/3_Sum_square_complexity)
   * [Factors Of A Given Number](/Math/All%20factors%20of%20a%20given%20Number)
   * [Collatz Conjecture](/Math/collatz_conjecture)
   * [Combinations](/Math/Combinations)
   * [Bézout's Coefficients](/Math/Bézout's%20Coefficients)
   * [Convex Hull](/Math/convexhull)
   * [Euler's Totient Function](/Math/eulers_totient_function)
   * [Factorization](/Math/Factorization)
   * [Factors](/Math/factors)
   * [Fast Exponentiation with Mod](/Math/Fast%20Exponentiation%20with%20Mod)
   * [Floor Square Root](/Math/floor_sqrt)
   * [Greatest Common Divisor](/Math/gcd)
   * [Histogram Area](/Math/histogram_area)
   * [Largest Number Divisible By Three](/Math/largest_number_divisible_by_three)
   * [Last Digit Exp](/Math/last_digit_exp)
   * [Logarithm](/Math/log)
   * [Lowest Common Multiple](/Math/lowest_common_multiple)
   * [Matrix Power](/Math/Matrix_Power)
   * [Max Divisible Number](/Math/max_divisible_num)
   * [Max Sub Rectangle](/Math/max_sub_rectangle)
   * [Max Sub Square](/Math/Max_Sub_Square)
   * [Miller Rabin Primality Test](/Math/miller_rabin_primality_test)
   * [Modular Multiplication Inverse](/Math/modular_multiplicative_inverse)
   * [Next Power of 2](/Math/NextPow2)
   * [Nth Root](/Math/nthRoot)
   * [Pascal Row](/Math/pascal_row)
   * [Power](/Math/Power)
   * [Prime](/Math/Prime)
   * [Randomized Algorithms](/Math/Randomized%20algorithms)
   * [Set](/Math/Set)
   * [Sieve Of Eratosthenes](/Math/sieve_of_eratosthenes)
   * [Square Root](/Math/squareroot)
   * [Subset Sum](/Math/subset_sum)
   * [Sum Of Digits](/Math/sum_of_digits)
   * [Tower Of Hanoi](/Math/TowerofHanoi)
   * [Truncated Square Root](/Math/truncated_square_root)
   * [Calculate And Print All Permutations](/Math/AllPermutations)
   * [Calculate the result of binom(n,p)](/Math/binomial_coefficients)
* [Network Flow](/NetworkFlow)
   * [Dinic](/NetworkFlow/Dinic)
   * [Edmund Karp](/NetworkFlow/EdmundKarp)
   * [Ford Fulkerson](/NetworkFlow/FordFulkerson)
   * [Goldberg Tarjan](/NetworkFlow/GoldbergTarjan)
* [Search Algorithms](/Search)
   * [Binary Search](/Search/BinarySearch)
   * [Fibonacci Search](/Search/FibonacciSearch)
   * [Hashing](/Search/hashing)
   * [Jump Search](/Search/JumpSearch)
   * [Linear Search](/Search/LinearSearch)
   * [Ternary Search](/Search/TernarySearch)
   * [Interpolation Search](/Search/InterpolationSearch)
   * [Exponential Search](/Search/ExponentialSearch)
* [Sorting Algorithms](/Sorting)
   * [BogoSort](/Sorting/BogoSort)
   * [Strand sort](/Sorting/strandsort)
   * [Bubble Sort](/Sorting/Bubble%20Sort)
   * [Bucket Sort](/Sorting/Bucket%20Sort)
   * [Cocktail Shaker Sort](/Sorting/Cocktail%20Shaker%20Sort)
   * [Comb Sort](/Sorting/Comb%20Sort)
   * [Counting Sort](/Sorting/Counting%20Sort)
   * [HeapSort](/Sorting/HeapSort)
   * [Index Sort](/Sorting/Index%20Sort)
   * [Insertion Sort](/Sorting/Insertion%20Sort)
   * [Merge Sort](/Sorting/Merge%20Sort)
   * [Pancake Sorting](/Sorting/Pancake%20Sorting)
   * [Patience Sorting](/Sorting/Patience%20Sorting)
   * [QuickSort](/Sorting/QuickSort)
   * [Radix Sort](/Sorting/Radix%20Sort)
   * [Selection Sort](/Sorting/Selection%20Sort)
   * [ShellSort](/Sorting/ShellSort)
   * [TimSort](/Sorting/TimSort)
   * [Topological Sorting](/Sorting/Topological%20Sorting)
* [String Algorithms](/String)
   * [Anagram](/String/Anagram)
   * [Balanced Parenthesis](/String/Balanced%20Parentheses)
   * [Hamming Distance](/String/Hamming%20distance)
   * [KMP](/String/KMP)
   * [Palindrome](/String/Palindrome)
   * [String Automaton](/String/String%20Automaton)
   * [String Matching](/String/String%20Matching)
   * [Substring](/String/Substring)
   * [Top K Frequent Words](/String/Top_K_Frequent_Words)
   * [Top K Frequent Words In Java](/String/top_k_frequent_words_in_java)
   * [Uncompressing Strings](/String/Uncompressing_Strings)
   * [Parsing Arithmetic](/String/ParsingArithmetic)
* [Geometry 2D](/Geometry%202D)
   * [Lines Intersection](/Geometry%202D/Lines%20Intersection)
