├── .clang-format ├── .gitattributes ├── .gitignore ├── .gitmodules ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md └── src ├── codebook ├── Template.cc ├── Template.java ├── algorithms │ ├── ArrayRotation.java │ ├── Backtracking.java │ ├── BigInt.cc │ ├── BinaryExponentiation.java │ ├── BinarySearch.java │ ├── BranchAndBound.java │ ├── CentroidDecomposition.cc │ ├── ClosestTwoPoints.java │ ├── CoordinateCompress.java │ ├── CountInversions.java │ ├── CycleDetectionBrent.java │ ├── CycleDetectionFloyd.java │ ├── HalfPlaneIntersection.cc │ ├── Majority.java │ ├── MeetInTheMiddle.java │ ├── Mo.java │ ├── Nim.java │ ├── PermutationIndex.java │ ├── ShuntingYard.java │ ├── Sort.java │ ├── StableMarriage.java │ ├── TernarySearch.java │ ├── TwoSat.java │ └── TwoSatExample.java ├── datastructures │ ├── AaTree.java │ ├── AvlTree.java │ ├── BTree.java │ ├── BinaryHeap.java │ ├── BinaryHeapExtended.java │ ├── BinaryIndexedTree.java │ ├── BinaryIndexedTree2D.java │ ├── BinarySearchTree.java │ ├── Deque.java │ ├── DifferenceArray.java │ ├── DifferenceArray2D.java │ ├── HashMap.java │ ├── ImplicitSegmentTree.java │ ├── ImplicitTreap.java │ ├── IntervalTree.java │ ├── KdTree.java │ ├── LinkCutTree.java │ ├── MergeTree.java │ ├── MinQueue.java │ ├── MisofTree.cc │ ├── PersistentBinarySearchTree.java │ ├── PersistentLinkedList.java │ ├── PersistentSegmentTree.java │ ├── PrefixSum.java │ ├── PrefixSum2D.java │ ├── Quadtree.java │ ├── RandomizedQueue.java │ ├── RangeTree.java │ ├── RedBlackTree.java │ ├── SegmentTreeNonrecursive.java │ ├── SegmentTreeRecursive.java │ ├── SizeBalancedTree.java │ ├── SkipList.java │ ├── SparseTable.java │ ├── SplayTree.java │ ├── SplayTreeSimple.java │ ├── Treap.java │ ├── TreapSimple.java │ └── UnionFind.java ├── dp │ ├── BinomialCoefficient.java │ ├── CatalanNumbers.java │ ├── CoinChange.java │ ├── ConvexHullTrick.cc │ ├── DivideAndConquerOptimization.java │ ├── DominoFill.java │ ├── EditDistance.java │ ├── EggDropping.java │ ├── HammingSequence.java │ ├── Knapsack.java │ ├── KnuthOptimization.cc │ ├── LongestCommonSubsequence.java │ ├── LongestCommonSubstring.java │ ├── LongestIncreasingSubsequence.java │ ├── MaximalZeroSubmatrix.java │ ├── MaximumSubarray.java │ ├── MinCostTriangulation.java │ ├── MinMatrixChainMultiplication.java │ ├── ShortestHamilitonCycle.java │ └── ShortestHamilitonPath.java ├── geometry │ ├── ConvexHull.java │ └── TriangleCenters.java ├── graph │ ├── BronKerbosch.java │ ├── Centers.java │ ├── DfsBiconnectedComponents.java │ ├── DfsBipartite.java │ ├── DfsCycleDetection.java │ ├── DfsEulerian.java │ ├── DfsTopologicalSort.java │ ├── LowestCommonAncestorDp.java │ ├── LowestCommonAncestorEuler.java │ ├── LowestCommonAncestorHld.java │ ├── RootedTreeIsomorphism.java │ ├── SccKosaraju.java │ ├── SccTarjan.java │ ├── SimpleTopologicalSort.java │ ├── mst │ │ ├── Boruvka.java │ │ ├── Kruskal.java │ │ ├── MinArborescence.java │ │ └── Prim.java │ ├── network │ │ ├── DilworthTheorem.java │ │ ├── MaxBipartiteMatchingHopcroftKarp.java │ │ ├── MaxBipartiteMatchingKuhn.java │ │ ├── MaxFlowDinic.java │ │ ├── MaxFlowEdmondsKarp.java │ │ ├── MaxFlowFordFulkerson.java │ │ ├── MaxFlowPushRelabel.java │ │ ├── MaxMatchingEdmond.java │ │ ├── MinCostMatchingHungarian.java │ │ ├── MinCostMaxFlowSuccessiveShortestPath.java │ │ ├── MinCostMaxFlowSuccessiveShortestPathPotential.java │ │ ├── MinCutStoerWagner.java │ │ └── MinRandomizedCutKarger.java │ ├── representation │ │ ├── AdjacencyList.java │ │ ├── AdjacencyMatrix.java │ │ ├── EdgeList.java │ │ └── IncidenceList.java │ ├── search │ │ ├── BreadthFirstSearch.java │ │ └── DepthFirstSearch.java │ └── shortestpath │ │ ├── BellmanFord.java │ │ ├── Dijkstra.java │ │ ├── DijkstraHeap.java │ │ ├── FloydWarshall.java │ │ ├── Johnson.java │ │ └── Spfa.java ├── math │ ├── Arrangements.java │ ├── Combinations.java │ ├── Combinatorics.java │ ├── Cramers.java │ ├── Euclid.java │ ├── FactorCount.txt │ ├── GaussianElimination.java │ ├── Matrix.java │ ├── MillerRabin.cc │ ├── Partitions.java │ ├── Permutations.java │ ├── PolynomialRootFinder.java │ ├── Primes.java │ ├── Rational.java │ ├── RealRootFinder.java │ ├── Sieve.java │ ├── SimpsonIntegration.java │ └── Toolkit.java └── string │ ├── AhoCorasick.java │ ├── BoyerMoore.java │ ├── Dc3.cc │ ├── HashString.java │ ├── HuffmanTree.java │ ├── Kmp.java │ ├── LcpArray.java │ ├── Manacher.java │ ├── PalindromeTreeSimple.java │ ├── PalindromeTreeSmart.java │ ├── RabinKarp.java │ ├── RadixTrie.java │ ├── Rope.java │ ├── StringAutomaton.java │ ├── SuffixArrayHash.java │ ├── SuffixArraySort.java │ ├── SuffixAutomaton.java │ ├── SuffixTree.java │ ├── Trie.java │ └── ZAlgorithm.java └── contest ├── acm ├── ACM_ACPC_2016_A.cc ├── ACM_ACPC_2016_B.cc ├── ACM_ACPC_2016_C.cc ├── ACM_ACPC_2016_D.cc ├── ACM_ACPC_2016_E.cc ├── ACM_ACPC_2016_F.py ├── ACM_ACPC_2016_G.cc ├── ACM_ACPC_2016_H.cc ├── ACM_ACPC_2016_I.cc ├── ACM_ACPC_2016_J.cc ├── ACM_A_Brief_Expedition.java ├── ACM_A_Careful_Reply.java ├── ACM_A_Frightening_Evening.java ├── ACM_A_Pleasant_Stroll.java ├── ACM_A_Subtle_Surf.java ├── ACM_Attack_of_the_Bloons.java ├── ACM_Diablo_Bot.java ├── ACM_Foxhole.java ├── ACM_Foxic_Expressions.java ├── ACM_Foxling_Feeding_Frenzy.java ├── ACM_Greater_New_York_2015_A.cc ├── ACM_Greater_New_York_2015_B.py ├── ACM_Greater_New_York_2015_C.cc ├── ACM_Greater_New_York_2015_D.py ├── ACM_Greater_New_York_2015_E.cc ├── ACM_Greater_New_York_2015_F.cc ├── ACM_Greater_New_York_2015_G.py ├── ACM_Greater_New_York_2015_H.cc ├── ACM_Greater_New_York_2015_I.java ├── ACM_Greater_New_York_2015_K.cc ├── ACM_Greater_New_York_2016_B.py ├── ACM_Hong_Kong_2016_A.cc ├── ACM_Hong_Kong_2016_B.cc ├── ACM_Hong_Kong_2016_C.java ├── ACM_Hong_Kong_2016_D.cc ├── ACM_Hong_Kong_2016_E.cc ├── ACM_Hong_Kong_2016_F.java ├── ACM_Hong_Kong_2016_I.java ├── ACM_Interleaving_Leaves.java ├── ACM_MVP.java ├── ACM_Max_Flow.java ├── ACM_Mount_Allison_2017_A.java ├── ACM_Mount_Allison_2017_C.cc ├── ACM_Mount_Allison_2017_D.java ├── ACM_Mount_Allison_2017_F.java ├── ACM_Mount_Allison_2017_G.java ├── ACM_Mount_Allison_2017_H.java ├── ACM_Mount_Allison_2017_I.cc ├── ACM_NAQ_2016_A.java ├── ACM_NAQ_2016_B.java ├── ACM_NAQ_2016_C.java ├── ACM_NAQ_2016_D.java ├── ACM_NAQ_2016_E.java ├── ACM_NAQ_2016_G.java ├── ACM_NAQ_2016_H.java ├── ACM_NAQ_2016_I.java ├── ACM_NAQ_2016_J.java ├── ACM_NAQ_2016_K.java ├── ACM_NAQ_2016_L.java ├── ACM_NAQ_2019_A.java ├── ACM_NAQ_2019_B.java ├── ACM_NAQ_2019_C.java ├── ACM_NAQ_2019_D.java ├── ACM_NAQ_2019_G.java ├── ACM_NAQ_2019_H.java ├── ACM_NAQ_2019_I.java ├── ACM_NAQ_2019_J.java ├── ACM_NAQ_2019_K.java ├── ACM_NAQ_2019_M.java ├── ACM_NA_East_Central_2015_B.cc ├── ACM_NA_East_Central_2015_D.java ├── ACM_NA_East_Central_2015_E.java ├── ACM_NA_East_Central_2015_F.java ├── ACM_NA_East_Central_2015_G.java ├── ACM_NA_East_Central_2015_H.java ├── ACM_NA_East_Central_2015_I.java ├── ACM_NEERC_2014_B.java ├── ACM_NEERC_2014_C.cc ├── ACM_NEERC_2014_C.java ├── ACM_NEERC_2014_C_2.cc ├── ACM_NEERC_2014_D.java ├── ACM_NEERC_2014_E.java ├── ACM_NEERC_2014_F.java ├── ACM_NEERC_2014_G.java ├── ACM_NEERC_2014_I.java ├── ACM_NEERC_2014_K.java ├── ACM_NEERC_2014_M.java ├── ACM_Office_Mates.java ├── ACM_Research_Project.java ├── ACM_Reverse_Fox_Hunt.java ├── ACM_Rock_Paper_Scissors.java ├── ACM_Super_Mario_Blues.java ├── ACM_The_Foxens_Treasure.java ├── ACM_Waterloo_Local_2016_Fall_A.java ├── ACM_Waterloo_Local_2016_Fall_B.java ├── ACM_Waterloo_Local_2016_Fall_C.java ├── ACM_Waterloo_Local_2016_Fall_D.java ├── ACM_Waterloo_Local_2017_Fall_A.java ├── ACM_Waterloo_Local_2017_Fall_B.java ├── ACM_Waterloo_Local_2017_Fall_C.java ├── ACM_Waterloo_Local_2017_Spring_A.java ├── ACM_Waterloo_Local_2017_Spring_B.java ├── ACM_Waterloo_Local_2017_Spring_C.java ├── ACM_Waterloo_Local_2017_Spring_E.java ├── ACM_Waterloo_Local_2017_Winter_A.java ├── ACM_Waterloo_Local_2017_Winter_B.java ├── ACM_Waterloo_Local_2017_Winter_C.java ├── ACM_Waterloo_Local_2017_Winter_D.java ├── ACM_Waterloo_Local_2017_Winter_E.java ├── ACM_Waterloo_Local_2019_Fall_A.java ├── ACM_Waterloo_Local_2019_Fall_B.java ├── ACM_Waterloo_Local_2019_Fall_C.java ├── CCPC_2017_A.java ├── CCPC_2017_B.java ├── CCPC_2017_C.java ├── CCPC_2017_D.java ├── CCPC_2017_F.java ├── CCPC_2017_G.java ├── CCPC_2017_H.java ├── CCPC_2017_I.java └── Rocky_Mountain_Regional_Contest_2015_B.cc ├── bloomberg ├── Bloomberg_Codecon_2017_A.java ├── Bloomberg_Codecon_2017_B.java ├── Bloomberg_Codecon_2017_C.java ├── Bloomberg_Codecon_2017_D.java ├── Bloomberg_Codecon_2017_E.java ├── Bloomberg_Codecon_2017_F.java ├── Bloomberg_Qualifier_2017_A.java ├── Bloomberg_Qualifier_2017_B.java ├── Bloomberg_Qualifier_2017_C.java ├── Bloomberg_Qualifier_2017_D.java ├── Bloomberg_Qualifier_2017_E.java ├── Bloomberg_Qualifier_2017_F.java ├── Bloomberg_Qualifier_2017_G.java └── Bloomberg_Qualifier_2017_H.java ├── ccc ├── CCC_1996_A.java ├── CCC_1996_B.cc ├── CCC_1996_C.java ├── CCC_1996_D.java ├── CCC_1996_E.java ├── CCC_1996_Stage_2_All_Roads_Lead_Where.java ├── CCC_1996_Stage_2_Hoppers.java ├── CCC_1996_Stage_2_Quadtrees.java ├── CCC_1996_Stage_2_Safebreaker.java ├── CCC_1996_Stage_2_Train_Swapping.java ├── CCC_1996_Stage_2_Wheres_Waldorf.java ├── CCC_1997_A.java ├── CCC_1997_B.java ├── CCC_1997_C.java ├── CCC_1997_D.java ├── CCC_1997_E.cc ├── CCC_1998_A.java ├── CCC_1998_C.java ├── CCC_1998_D.java ├── CCC_1998_E.java ├── CCC_1998_S2.java ├── CCC_1999_P1.java ├── CCC_1999_P2.java ├── CCC_1999_P3.java ├── CCC_1999_P4.java ├── CCC_1999_Stage_2_Cant_Get_There.java ├── CCC_1999_Stage_2_Common_Words.java ├── CCC_1999_Stage_2_Fast_Food.java ├── CCC_1999_Stage_2_Mandelzumas_Revenge.java ├── CCC_1999_Stage_2_Maple_Roundup.cc ├── CCC_1999_Stage_2_Sum_of_Products.java ├── CCC_2000_J1.java ├── CCC_2000_J2.java ├── CCC_2000_J3_S1.java ├── CCC_2000_J4_S2.java ├── CCC_2000_J5_S3.java ├── CCC_2000_S4.java ├── CCC_2000_S4_2.java ├── CCC_2000_S5.java ├── CCC_2000_Stage_2_Extension_Cords.cc ├── CCC_2000_Stage_2_Oil_Droplet.java ├── CCC_2000_Stage_2_Packet_Routing.java ├── CCC_2000_Stage_2_Ransom_Note.java ├── CCC_2000_Stage_2_Subsets.java ├── CCC_2000_Stage_2_The_Game_Of_31.java ├── CCC_2001_J1.java ├── CCC_2001_J2.java ├── CCC_2001_J3_S1.java ├── CCC_2001_J4_S2.java ├── CCC_2001_J5_S3.java ├── CCC_2001_S4.java ├── CCC_2001_S5.java ├── CCC_2001_Stage_2_Coke_or_Chocolate_Milk.java ├── CCC_2001_Stage_2_Election_Night.java ├── CCC_2001_Stage_2_Fast_Food.java ├── CCC_2001_Stage_2_Partitions.java ├── CCC_2001_Stage_2_Partitions_Brute_Force.java ├── CCC_2001_Stage_2_Partitions_DP.java ├── CCC_2002_J1.java ├── CCC_2002_J2.java ├── CCC_2002_J3_S1.java ├── CCC_2002_J4_S2.java ├── CCC_2002_J5_S3.java ├── CCC_2002_S4.java ├── CCC_2002_S5.java ├── CCC_2002_Stage_2_Connect_The_Campus.java ├── CCC_2002_Stage_2_Duathlon.java ├── CCC_2002_Stage_2_Game_Show_Math.java ├── CCC_2002_Stage_2_Spam.java ├── CCC_2003_J1.java ├── CCC_2003_J2.java ├── CCC_2003_J3_S1.java ├── CCC_2003_J4_S2.java ├── CCC_2003_J5_S3.java ├── CCC_2003_S4.java ├── CCC_2003_S5.java ├── CCC_2003_S5_3.java ├── CCC_2003_Stage_2_BFed.java ├── CCC_2003_Stage_2_Cheap_Gas.java ├── CCC_2003_Stage_2_Concentration.java ├── CCC_2003_Stage_2_Constrained_Permutations.java ├── CCC_2003_Stage_2_Cube.java ├── CCC_2003_Stage_2_Longest_Substring.cc ├── CCC_2003_Stage_2_Longest_Substring.java ├── CCC_2003_Stage_2_Longest_Substring_2.java ├── CCC_2004_J1.java ├── CCC_2004_J2.java ├── CCC_2004_J3.java ├── CCC_2004_J4.java ├── CCC_2004_J5.java ├── CCC_2004_S1.java ├── CCC_2004_S2.java ├── CCC_2004_S3.java ├── CCC_2004_S4.java ├── CCC_2004_S5.java ├── CCC_2004_Stage_2_Hockey_Scores.java ├── CCC_2004_Stage_2_Jengaism.java ├── CCC_2004_Stage_2_Orko.cc ├── CCC_2004_Stage_2_Orko.java ├── CCC_2004_Stage_2_Scribble.java ├── CCC_2005_J1.java ├── CCC_2005_J2.java ├── CCC_2005_J3.java ├── CCC_2005_J4.java ├── CCC_2005_J5.java ├── CCC_2005_S1.java ├── CCC_2005_S2.java ├── CCC_2005_S3.java ├── CCC_2005_S4.java ├── CCC_2005_S5.java ├── CCC_2005_S5_2.java ├── CCC_2005_Stage_2_Number_Matrix.java ├── CCC_2005_Stage_2_Primed_Sequences.java ├── CCC_2005_Stage_2_Segments.java ├── CCC_2005_Stage_2_The_Great_Spamway_Strike.java ├── CCC_2006_J1.java ├── CCC_2006_J2.java ├── CCC_2006_J3.java ├── CCC_2006_J4.java ├── CCC_2006_J5.java ├── CCC_2006_S1.java ├── CCC_2006_S2.java ├── CCC_2006_S3.java ├── CCC_2006_S4.java ├── CCC_2006_S5.java ├── CCC_2006_Stage_2_CN_Tower.java ├── CCC_2006_Stage_2_Dominoes.java ├── CCC_2006_Stage_2_Paint_By_Numbers.java ├── CCC_2006_Stage_2_R_And_J.java ├── CCC_2007_J1.java ├── CCC_2007_J2.java ├── CCC_2007_J3.java ├── CCC_2007_J4.java ├── CCC_2007_J5.java ├── CCC_2007_S1.java ├── CCC_2007_S2.java ├── CCC_2007_S3.java ├── CCC_2007_S4.java ├── CCC_2007_S5.java ├── CCC_2007_Stage_2_Bowling_For_Numbers.cc ├── CCC_2007_Stage_2_Bowling_For_Numbers.java ├── CCC_2007_Stage_2_Cows.java ├── CCC_2007_Stage_2_Gerrymandering.java ├── CCC_2007_Stage_2_Road_Construction.java ├── CCC_2007_Stage_2_Snowflakes.java ├── CCC_2008_J1.java ├── CCC_2008_J2.java ├── CCC_2008_J3.java ├── CCC_2008_J4.java ├── CCC_2008_J5_S5.java ├── CCC_2008_S1.java ├── CCC_2008_S2.java ├── CCC_2008_S3.java ├── CCC_2008_S4.java ├── CCC_2008_Stage_2_Candy.java ├── CCC_2008_Stage_2_Candy_2.java ├── CCC_2008_Stage_2_Herding.java ├── CCC_2008_Stage_2_King_And_Weber.java ├── CCC_2008_Stage_2_Mobile.java ├── CCC_2008_Stage_2_Moving_Day.java ├── CCC_2009_J1.java ├── CCC_2009_J2.java ├── CCC_2009_J3.java ├── CCC_2009_J4.java ├── CCC_2009_J5_S3.java ├── CCC_2009_S1.java ├── CCC_2009_S2.java ├── CCC_2009_S4.cc ├── CCC_2009_S4.java ├── CCC_2009_S5.java ├── CCC_2009_Stage_2_A_Weighty_Problem.java ├── CCC_2009_Stage_2_Beware_of_the_Geoducks.java ├── CCC_2009_Stage_2_Dinner_DP.java ├── CCC_2009_Stage_2_Dinner_Simple.java ├── CCC_2009_Stage_2_Invasion_Of_The_Boxen.java ├── CCC_2009_Stage_2_Parade.cc ├── CCC_2009_Stage_2_Parade.java ├── CCC_2010_J1.java ├── CCC_2010_J2.java ├── CCC_2010_J3.java ├── CCC_2010_J4.java ├── CCC_2010_J5.java ├── CCC_2010_S1.java ├── CCC_2010_S2.java ├── CCC_2010_S3.java ├── CCC_2010_S4.java ├── CCC_2010_S5.cc ├── CCC_2010_S5.java ├── CCC_2010_Stage_2_Barking_Dogs.java ├── CCC_2010_Stage_2_Computer_Purchase_Return.java ├── CCC_2010_Stage_2_Shuffle.java ├── CCC_2010_Stage_2_Space_Miner.java ├── CCC_2010_Stage_2_Tree_Pruning.java ├── CCC_2010_Stage_2_Wowow.cc ├── CCC_2010_Stage_2_Wowow.java ├── CCC_2011_J1.java ├── CCC_2011_J2.java ├── CCC_2011_J3.java ├── CCC_2011_J4.java ├── CCC_2011_J5.java ├── CCC_2011_S1.java ├── CCC_2011_S2.java ├── CCC_2011_S3.java ├── CCC_2011_S4.java ├── CCC_2011_S5.cc ├── CCC_2011_S5.java ├── CCC_2011_Stage_2_Biggest_Footprint.cc ├── CCC_2011_Stage_2_Putnam.java ├── CCC_2011_Stage_2_Reorganization.java ├── CCC_2011_Stage_2_Repetitivity.java ├── CCC_2011_Stage_2_Spies_Like_Us.java ├── CCC_2011_Stage_2_The_Monkey_Dance.java ├── CCC_2011_Stage_2_Vampire_Tunnels.java ├── CCC_2012_J1.java ├── CCC_2012_J2.java ├── CCC_2012_J3.java ├── CCC_2012_J4.java ├── CCC_2012_J5.java ├── CCC_2012_S1.java ├── CCC_2012_S2.java ├── CCC_2012_S3.java ├── CCC_2012_S4.java ├── CCC_2012_S5.java ├── CCC_2012_Stage_2_Barking_Dogs.java ├── CCC_2012_Stage_2_Choose_Your_Own_Arithmetic.java ├── CCC_2012_Stage_2_Editor_Distance.java ├── CCC_2012_Stage_2_Mhocskain_Languages.java ├── CCC_2012_Stage_2_Sample_Size.java ├── CCC_2012_Stage_2_The_Hungary_Games.java ├── CCC_2012_Stage_2_Winds_Of_War.cc ├── CCC_2012_Stage_2_Winds_Of_War.java ├── CCC_2013_J1.java ├── CCC_2013_J2.java ├── CCC_2013_J3_S1.java ├── CCC_2013_J4.java ├── CCC_2013_J5_S3.java ├── CCC_2013_S2.java ├── CCC_2013_S4.java ├── CCC_2013_S5.java ├── CCC_2013_Stage_2_All_Your_Bases_Are_Belong_To_Palindrome.java ├── CCC_2013_Stage_2_LHC.java ├── CCC_2013_Stage_2_Romantic_Movie_Outing.cc ├── CCC_2013_Stage_2_Romantic_Movie_Outing.java ├── CCC_2013_Stage_2_Tourney.java ├── CCC_2013_Stage_2_Transforming_Comets.cc ├── CCC_2014_J1.java ├── CCC_2014_J2.java ├── CCC_2014_J3.java ├── CCC_2014_J4_S1.java ├── CCC_2014_J5_S2.java ├── CCC_2014_S3.java ├── CCC_2014_S4.java ├── CCC_2014_S5.cc ├── CCC_2014_S5.java ├── CCC_2014_Stage_2_Early_Exam_Evacuation.java ├── CCC_2014_Stage_2_King_Gruff.java ├── CCC_2014_Stage_2_Troyangles.java ├── CCC_2014_Stage_2_Werewolves.java ├── CCC_2014_Stage_2_Wheres_That_Fuel.java ├── CCC_2015_J1.java ├── CCC_2015_J2.java ├── CCC_2015_J3.java ├── CCC_2015_J4.java ├── CCC_2015_J5.java ├── CCC_2015_S1.java ├── CCC_2015_S2.java ├── CCC_2015_S3.java ├── CCC_2015_S4.cc ├── CCC_2015_S4.java ├── CCC_2015_S5.cc ├── CCC_2015_S5.java ├── CCC_2015_Stage_2_Artskjid.java ├── CCC_2015_Stage_2_Cars_On_Ice.java ├── CCC_2015_Stage_2_Eggscavation.cc ├── CCC_2015_Stage_2_Eggscavation.java ├── CCC_2015_Stage_2_Hungry_Fox.java ├── CCC_2015_Stage_2_Solar_Flight.cc ├── CCC_2015_Stage_2_Solar_Flight.java ├── CCC_2015_Stage_2_Timpanist.java ├── CCC_2016_J1.java ├── CCC_2016_J2.java ├── CCC_2016_J3.java ├── CCC_2016_J4.java ├── CCC_2016_S1.java ├── CCC_2016_S2.java ├── CCC_2016_S3.cc ├── CCC_2016_S3.java ├── CCC_2016_S4.java ├── CCC_2016_S5.java ├── CCC_2016_Stage_2_Field_Trip.cc ├── CCC_2016_Stage_2_Field_Trip.java ├── CCC_2016_Stage_2_Legends.java ├── CCC_2016_Stage_2_O_Canada.java ├── CCC_2016_Stage_2_Pirates.java ├── CCC_2016_Stage_2_Splitting_Hares.cc ├── CCC_2016_Stage_2_Splitting_Hares.java ├── CCC_2016_Stage_2_Zombies_Apocalypse.java ├── CCC_Stage_2_Cars_On_Ice.cc ├── CCOQR_2016_P1.java ├── CCOQR_2016_P2.java ├── CCOQR_2016_P3.cc ├── CCOQR_2016_P3.java ├── MockCCC_2010_T800_Escape.java ├── MockCCC_2014_J1.java ├── MockCCC_2014_J2.java ├── MockCCC_2014_J3.java ├── MockCCC_2014_J4.java ├── MockCCC_2014_J5.java ├── MockCCC_2014_S1.java ├── MockCCC_2014_S2.java ├── MockCCC_2014_S3.java ├── MockCCC_2014_S4.java ├── MockCCC_2014_S5.java ├── MockCCC_2015_J1.java ├── MockCCC_2015_J2.java ├── MockCCC_2015_J3.java ├── MockCCC_2015_J4.java ├── MockCCC_2015_J5.cc ├── MockCCC_2015_J5.java ├── MockCCC_2015_S1.java ├── MockCCC_2015_S2.java ├── MockCCC_2015_S3.java └── MockCCC_2015_S4.cc ├── coci ├── COCI_2006_ABC.java ├── COCI_2006_BARD.java ├── COCI_2006_BICIKLI.java ├── COCI_2006_BOND.java ├── COCI_2006_BOND_2.java ├── COCI_2006_CIRCLE.java ├── COCI_2006_DEBUG.cc ├── COCI_2006_DEBUG.java ├── COCI_2006_DVAPUT.cc ├── COCI_2006_DVAPUT.java ├── COCI_2006_FIREFLY.java ├── COCI_2006_HERMAN.java ├── COCI_2006_ISPITI.cc ├── COCI_2006_IVANA.java ├── COCI_2006_JOGURT.java ├── COCI_2006_KAMEN.java ├── COCI_2006_KOLONE.java ├── COCI_2006_LISTA.java ├── COCI_2006_MAGIJA.java ├── COCI_2006_MARATON.java ├── COCI_2006_MODULO.java ├── COCI_2006_NATRIJ.java ├── COCI_2006_NPUZZLE.java ├── COCI_2006_OKVIRI.java ├── COCI_2006_PATRIK.cc ├── COCI_2006_PATRIK.java ├── COCI_2006_PATULJCI.java ├── COCI_2006_PRASE.java ├── COCI_2006_PRSTENI.java ├── COCI_2006_R2.java ├── COCI_2006_SIBICE.java ├── COCI_2006_SJECISTA.java ├── COCI_2006_SKENER.java ├── COCI_2006_SLIKAR.java ├── COCI_2006_STOL.java ├── COCI_2006_TENIS.java ├── COCI_2006_TENKICI.java ├── COCI_2006_TETRIS.java ├── COCI_2006_TRIK.java ├── COCI_2006_TROJKE.java ├── COCI_2006_ZBRKA.java ├── COCI_2007_AVOGADRO.java ├── COCI_2007_BARICA.java ├── COCI_2007_BIJELE.java ├── COCI_2007_CESTARINE.java ├── COCI_2007_CETIRI.java ├── COCI_2007_CETVRTA.java ├── COCI_2007_CRNE.java ├── COCI_2007_CUDAK.java ├── COCI_2007_DEJAVU.java ├── COCI_2007_GEORGE.java ├── COCI_2007_GRANICA.java ├── COCI_2007_JABUKE.java ├── COCI_2007_JEDNAKOST.cc ├── COCI_2007_JEDNAKOST.java ├── COCI_2007_JEDNAKOST_2.java ├── COCI_2007_KEMIJA.java ├── COCI_2007_KUHAR.java ├── COCI_2007_LEKTIRA.java ├── COCI_2007_LIGA.java ├── COCI_2007_MUZICARI.java ├── COCI_2007_NIKOLA.java ├── COCI_2007_OKTALNI.java ├── COCI_2007_PARKING.java ├── COCI_2007_PASCAL.java ├── COCI_2007_PEG.java ├── COCI_2007_PLATFORME.java ├── COCI_2007_POKLON.java ├── COCI_2007_PRAVOKUTNI.java ├── COCI_2007_PRINCEZA.java ├── COCI_2007_PRINCEZA_2.java ├── COCI_2007_PRINOVA.java ├── COCI_2007_PRVA.java ├── COCI_2007_REDOK.cc ├── COCI_2007_REDOK.java ├── COCI_2007_SEMAFORI.java ├── COCI_2007_SREDNJI.java ├── COCI_2007_TAJNA.java ├── COCI_2007_TRI.java ├── COCI_2007_TURBO.java ├── COCI_2007_VAUVAU.java ├── COCI_2007_VECI.java ├── COCI_2007_ZAPIS.java ├── COCI_2008_BAZEN.java ├── COCI_2008_BST.java ├── COCI_2008_BST_2.java ├── COCI_2008_BUKA.cc ├── COCI_2008_CAVLI.java ├── COCI_2008_CIJEVI.java ├── COCI_2008_CROSS.java ├── COCI_2008_CUSKIJA.java ├── COCI_2008_CVJETICI.java ├── COCI_2008_DATUM.java ├── COCI_2008_DOSTAVA.java ├── COCI_2008_GLASNICI.java ├── COCI_2008_KEMIJA.java ├── COCI_2008_KOLEKCIJA.cc ├── COCI_2008_KORNISLAV.java ├── COCI_2008_KRTICA.java ├── COCI_2008_KRTICA_2.java ├── COCI_2008_MAJSTOR.java ├── COCI_2008_MJEHURIC.java ├── COCI_2008_MRAVOJED.java ├── COCI_2008_NAJKRACI.java ├── COCI_2008_NERED.java ├── COCI_2008_NOP.java ├── COCI_2008_OTOCI.cc ├── COCI_2008_PERKET.java ├── COCI_2008_PET.java ├── COCI_2008_PTICE.java ├── COCI_2008_RELJEF.java ├── COCI_2008_RESETO.java ├── COCI_2008_ROT.java ├── COCI_2008_SETNJA.cc ├── COCI_2008_SKAKAVAC.cc ├── COCI_2008_SKAKAVAC.java ├── COCI_2008_SKAKAVAC_2.java ├── COCI_2008_SKOCIMIS.java ├── COCI_2008_SLICICE.java ├── COCI_2008_SLIKAR.java ├── COCI_2008_SVADA.java ├── COCI_2008_TABLICA.java ├── COCI_2009_AUTORI.java ├── COCI_2009_BAKICE.java ├── COCI_2009_COKOLADA.java ├── COCI_2009_CUDOVISTE.java ├── COCI_2009_DOBRA.java ├── COCI_2009_DOBRA_2.java ├── COCI_2009_DOMINO.java ├── COCI_2009_DOSADAN.java ├── COCI_2009_FAKTOR.java ├── COCI_2009_FILIP.java ├── COCI_2009_GENIJALAC.java ├── COCI_2009_HOLMES.java ├── COCI_2009_HRASTOVI.java ├── COCI_2009_IKS.java ├── COCI_2009_KABOOM.cc ├── COCI_2009_KABOOM.java ├── COCI_2009_KAJAK.java ├── COCI_2009_KLETVA.java ├── COCI_2009_KRALJEVI.java ├── COCI_2009_KUTEVI.java ├── COCI_2009_MALI.cc ├── COCI_2009_MALI.java ├── COCI_2009_NATJECANJE.java ├── COCI_2009_NOTE.java ├── COCI_2009_OGRADA.cc ├── COCI_2009_OGRADA.java ├── COCI_2009_OTOCI.java ├── COCI_2009_PASIJANS.cc ├── COCI_2009_PASIJANS.java ├── COCI_2009_PATULJCI.cc ├── COCI_2009_PLANINA.java ├── COCI_2009_POSLOZI.java ├── COCI_2009_PROGRAM.java ├── COCI_2009_RAZGOVORI.java ├── COCI_2009_RIMSKI.java ├── COCI_2009_SLATKISI.java ├── COCI_2009_SOK.java ├── COCI_2009_SORT.java ├── COCI_2009_SPAVANAC.java ├── COCI_2009_SVEMIR.java ├── COCI_2009_VUK.java ├── COCI_2009_XOR.java ├── COCI_2009_ZUMA.java ├── COCI_2013_KUSAC.java ├── COCI_2013_LOPOV.cc ├── COCI_2013_LOPOV.java ├── COCI_2013_ORGANIZATOR.java ├── COCI_2013_RATAR.cc ├── COCI_2013_RATAR.java ├── COCI_2013_SALASTICAR.java ├── COCI_2013_TRENER.java ├── COCI_2014_ACM.java ├── COCI_2014_BOB.java ├── COCI_2014_CESTA.java ├── COCI_2014_COCI.java ├── COCI_2014_DOM.java ├── COCI_2014_FUNGHI.java ├── COCI_2014_JABUKE.cc ├── COCI_2014_JABUKE.java ├── COCI_2014_JANJE.java ├── COCI_2014_KAMP.cc ├── COCI_2014_KAMP.java ├── COCI_2014_KLOPKA.java ├── COCI_2014_KRATKI.java ├── COCI_2014_KRIZA.java ├── COCI_2014_MAFIJA.java ├── COCI_2014_METEOR.java ├── COCI_2014_MOBITEL.java ├── COCI_2014_MRAVI.java ├── COCI_2014_NEO.java ├── COCI_2014_NIKO.java ├── COCI_2014_NORMA.cc ├── COCI_2014_NORMA.java ├── COCI_2014_PAPRIKA.java ├── COCI_2014_PIRAMIDA.java ├── COCI_2014_PRIPREME.java ├── COCI_2014_PROSJEK.java ├── COCI_2014_PSENICA.java ├── COCI_2014_SABOR.cc ├── COCI_2014_SABOR.java ├── COCI_2014_SILUETA.cc ├── COCI_2014_SILUETA.java ├── COCI_2014_STANOVI.cc ├── COCI_2014_STANOVI.java ├── COCI_2014_STOGOVI.java ├── COCI_2014_STROJOPIS.java ├── COCI_2014_STUDENTSKO.java ├── COCI_2014_SUMA.cc ├── COCI_2014_TETA.java ├── COCI_2014_TRAKTOR.java ├── COCI_2014_UTRKA.java ├── COCI_2014_WTF.cc ├── COCI_2014_WTF.java ├── COCI_2014_ZABAVA.java ├── COCI_2014_ZGODAN.java ├── COCI_2014_ZMIJA.java ├── COCI_2015_AKCIJA.cc ├── COCI_2015_ARTUR.cc ├── COCI_2015_BALONI.cc ├── COCI_2015_CHEWBACCA.java ├── COCI_2015_DEATHSTAR.java ├── COCI_2015_ENDOR.cc ├── COCI_2015_ESEJ.cc ├── COCI_2015_GALAKSIJA.cc ├── COCI_2015_GALAKSIJA.java ├── COCI_2015_GEPPETTO.cc ├── COCI_2015_HAN.java ├── COCI_2015_KARTE.cc ├── COCI_2015_MARKO.cc ├── COCI_2015_MOLEKULE.cc ├── COCI_2015_POT.cc ├── COCI_2015_RELATIVNOST.cc ├── COCI_2015_SAVEZ.cc ├── COCI_2015_SLON.java ├── COCI_2015_TOPOVI.java ├── COCI_2015_VUDU.cc ├── COCI_2015_VUDU_2.cc ├── COCI_2015_YODA.java ├── COCI_2016_CEZAR.java ├── COCI_2016_JETPACK.java ├── COCI_2016_KRALJ.cc ├── COCI_2016_MAG.cc ├── COCI_2016_MAG.java └── COCI_2016_TARIFA.java ├── codeforces ├── CROC_2016_Elimination_A.java ├── CROC_2016_Elimination_B.java ├── CROC_2016_Elimination_C.java ├── CROC_2016_Elimination_D.java ├── CROC_2016_Elimination_E.java ├── CROC_2016_Elimination_F.java ├── CROC_2016_Qualification_A.java ├── CROC_2016_Qualification_B.java ├── CROC_2016_Qualification_C.java ├── Round_142A.java ├── Round_142B.java ├── Round_142C.java ├── Round_142D.java ├── Round_182C.java ├── Round_189C.java ├── Round_190E.java ├── Round_228B.java ├── Round_238E.java ├── Round_299A.java ├── Round_299B.java ├── Round_301D.java ├── Round_302C.cc ├── Round_309A.java ├── Round_309B.java ├── Round_336A_Div2.java ├── Round_336B_Div2.java ├── Round_336C_Div2.java ├── Round_336D_Div2.java ├── Round_352C.java ├── Round_353A_Div2.java ├── Round_353B_Div2.java ├── Round_353C_Div2.java ├── Round_353D_Div2.java ├── Round_353E_Div2.java ├── Round_365A_Div2.java ├── Round_365B_Div2.java ├── Round_365C_Div2.java ├── Round_365D_Div2.java ├── Round_365E_Div2.cc └── Round_365E_Div2.java ├── codejam ├── GCJ_2015_Qualification_A.java ├── GCJ_2015_Qualification_B.java ├── GCJ_2015_Qualification_C.java ├── GCJ_2015_Qualification_D.java ├── GCJ_2015_Round_1A_A.java ├── GCJ_2015_Round_1A_B.java ├── GCJ_2015_Round_1B_A.java ├── GCJ_2015_Round_1B_B.java ├── GCJ_2015_Round_1C_A.java ├── GCJ_2015_Round_1C_B.java ├── GCJ_2015_Round_1C_C.java ├── GCJ_2016_Qualification_A.java ├── GCJ_2016_Qualification_B.java ├── GCJ_2016_Qualification_C.java ├── GCJ_2016_Qualification_D.java ├── GCJ_2016_Round_1A_A.java ├── GCJ_2016_Round_1A_B.java ├── GCJ_2016_Round_1A_C.java ├── GCJ_2016_Round_1B_A.java ├── GCJ_2016_Round_1B_B.java ├── GCJ_2016_Round_1B_C.java ├── GCJ_2016_Round_1C_A.java ├── GCJ_2016_Round_1C_B.java ├── GCJ_2016_Round_1C_C.java ├── GCJ_2016_Round_2_A.java ├── GCJ_2016_Round_2_B.java ├── GCJ_2016_Round_2_C.java ├── GCJ_2016_Round_2_D.java ├── GCJ_2017_Qualification_A.cc ├── GCJ_2017_Qualification_B.cc ├── GCJ_2017_Qualification_C.cc ├── GCJ_2017_Qualification_D.cc ├── GCJ_2017_Round_1A_A.java ├── GCJ_2017_Round_1A_B.cc ├── GCJ_2017_Round_1A_C.java ├── GCJ_2017_Round_1B_A.java ├── GCJ_2017_Round_1B_B.java ├── GCJ_2017_Round_1B_C.java ├── GCJ_2017_Round_1C_A.java ├── GCJ_2017_Round_1C_B.java ├── GCJ_2017_Round_1C_C.java ├── GCJ_2018_Qualification_A.java ├── GCJ_2018_Qualification_B.java ├── GCJ_2018_Qualification_C.java ├── GCJ_2018_Qualification_D.java ├── GCJ_2018_Round_1A_A.java ├── GCJ_2018_Round_1A_B.java ├── GCJ_2018_Round_1A_C.java ├── GCJ_2018_Round_1B_A.java ├── GCJ_2018_Round_1B_B.java ├── GCJ_2018_Round_1B_C.java ├── GCJ_2018_Round_1C_A.java ├── GCJ_2018_Round_1C_B.java ├── GCJ_2018_Round_1C_C.java ├── GCJ_2018_Round_2_A.java ├── GCJ_2018_Round_2_B.java ├── GCJ_2018_Round_2_C.java ├── GCJ_2018_Round_2_D.java ├── GCJ_2019_Qualification_A.java ├── GCJ_2019_Qualification_B.java ├── GCJ_2019_Qualification_C.py ├── GCJ_2019_Qualification_D.java ├── GCJ_2019_Round_1A_A.java ├── GCJ_2019_Round_1A_B.java ├── GCJ_2019_Round_1A_C.java ├── GCJ_2019_Round_1B_A.java ├── GCJ_2019_Round_1B_B.java ├── GCJ_2019_Round_1B_C.java ├── GCJ_2019_Round_1C_A.java ├── GCJ_2019_Round_1C_B.java ├── GCJ_2019_Round_1C_C.java ├── GCJ_2019_Round_2_A.java ├── GCJ_2019_Round_2_B.java ├── GCJ_2019_Round_2_C.java ├── GCJ_2019_Round_2_D.java ├── GCJ_2020_Qualification_A.java ├── GCJ_2020_Qualification_B.java ├── GCJ_2020_Qualification_C.java ├── GCJ_2020_Qualification_D.java ├── GCJ_2020_Qualification_E.java ├── GCJ_2020_Round_1A_A.java ├── GCJ_2020_Round_1A_B.java ├── GCJ_2020_Round_1A_C.java ├── GCJ_2020_Round_1B_A.java ├── GCJ_2020_Round_1B_B.java ├── GCJ_2020_Round_1B_C.java ├── GCJ_2020_Round_1C_A.java ├── GCJ_2020_Round_1C_B.java ├── GCJ_2020_Round_1C_C.java ├── GCJ_2020_Round_2_A.java ├── GCJ_2020_Round_2_B.java ├── GCJ_2020_Round_2_C.java ├── GCJ_2020_Round_3_A.java ├── GCJ_2021_Qualification_A.java ├── GCJ_2021_Qualification_B.java ├── GCJ_2021_Qualification_C.java ├── GCJ_2021_Qualification_D.java ├── GCJ_2021_Qualification_E.java ├── GDCJ_2015_Online_Round_B.cc ├── GDCJ_2015_Practice_Round_B.cc ├── GDCJ_2015_Practice_Round_C.cc ├── GDCJ_2015_Practice_Round_D.cc ├── GDCJ_2016_Round_1_B.cc ├── GDCJ_2016_Round_1_C.cc ├── GDCJ_2016_Round_1_D.cc ├── GDCJ_2016_Round_1_E.cc ├── GDCJ_2016_Round_2_B.cc ├── GDCJ_2016_Round_2_C.cc ├── GDCJ_2017_Round_1_B.cc ├── GDCJ_2017_Round_1_C.cc ├── GDCJ_2017_Round_1_D.cc └── GDCJ_2017_Round_1_E.cc ├── dmoj ├── Alex_And_Animal_Rights.java ├── April_Fool_Folklore.java ├── April_Fool_John_Cena.java ├── April_Fool_Miracle_Sort.java ├── April_Fool_Piggy.java ├── April_Fool_SAOJ.java ├── April_Fool_SAOJ2.java ├── April_Fool_Scroll.java ├── April_Fool_Too_Simple.java ├── Bad_Paths.cc ├── Bad_Paths.java ├── Binary_Indexed_Tree_Test.cc ├── Breaking_The_Friend_Chain.java ├── CCO_Mashup_Largest_Permutation.java ├── CCO_Mashup_Largest_Permutation_2.java ├── CCO_Mashup_NO_ACM_NO_LIFE.cc ├── CCO_Mashup_Touching_Segment.java ├── CCO_Prep_An_Easy_Problem.cc ├── CCO_Prep_An_Easy_Problem.java ├── CCO_Prep_City_Game.cc ├── CCO_Prep_City_Game.java ├── CCO_Prep_Concatenation.cc ├── CCO_Prep_Corporative_Network.cc ├── CCO_Prep_Corporative_Network.java ├── CCO_Prep_Double_Cross.java ├── CCO_Prep_Escape_Maze.java ├── CCO_Prep_Hopscotch.cc ├── CCO_Prep_Hopscotch.java ├── CCO_Prep_Kth_Rank_Student.java ├── CCO_Prep_Packing_Up.java ├── CCO_Prep_Subsets.java ├── Christmas_Is_It_A_Tree.java ├── Christmas_Mine_And_Tree.java ├── Christmas_Tree_Cutting.java ├── DMOPC_2013_AFK.java ├── DMOPC_2013_A_Romantic_Dinner.java ├── DMOPC_2013_Crossing_Field.java ├── DMOPC_2013_Math_On_Titan.java ├── DMOPC_2013_Phone_Microwave.java ├── DMOPC_2013_Sharing_is_Caring.java ├── DMOPC_2013_Snowman.java ├── DMOPC_2014_Aircraft_Carrier_Akagi.java ├── DMOPC_2014_Apples_To_Oranges.java ├── DMOPC_2014_Attack_On_Anti_Spiral.java ├── DMOPC_2014_Aurora.cc ├── DMOPC_2014_Aurora.java ├── DMOPC_2014_Bad_Smores.java ├── DMOPC_2014_Black_And_White.java ├── DMOPC_2014_Brotherly_Sequence.java ├── DMOPC_2014_Bus_Jam.java ├── DMOPC_2014_Chemistry_Homework.java ├── DMOPC_2014_Collecting_Dust.java ├── DMOPC_2014_Core_Drill.java ├── DMOPC_2014_Cutting_Logs.java ├── DMOPC_2014_Deforestation.java ├── DMOPC_2014_Exam_Delay.java ├── DMOPC_2014_ExpedColle.cc ├── DMOPC_2014_Expedcolle.java ├── DMOPC_2014_Finding_Bessarion.java ├── DMOPC_2014_Flare.java ├── DMOPC_2014_French_Homework.java ├── DMOPC_2014_GO_Faster.java ├── DMOPC_2014_Globally_Unique_Sails.java ├── DMOPC_2014_Golden_Lily.java ├── DMOPC_2014_Happy_Teachers.java ├── DMOPC_2014_Kinako_Bread_2.java ├── DMOPC_2014_Kittans_Dilemma.java ├── DMOPC_2014_Logging_Log.java ├── DMOPC_2014_Loner_Phoner.java ├── DMOPC_2014_Longest_Tunnel.java ├── DMOPC_2014_Luxurious_Smores.java ├── DMOPC_2014_MMORPG.java ├── DMOPC_2014_Math_Homework.java ├── DMOPC_2014_Maximum_Product.java ├── DMOPC_2014_Median_Mark.java ├── DMOPC_2014_New_Students.java ├── DMOPC_2014_Nia_And_Dominoes.cc ├── DMOPC_2014_Nia_And_Dominoes.java ├── DMOPC_2014_Not_Enough_Personnel.java ├── DMOPC_2014_Not_Enough_Rejudging.java ├── DMOPC_2014_Not_Enough_Servers.java ├── DMOPC_2014_Not_Enough_Testers.java ├── DMOPC_2014_Not_Enough_Time.java ├── DMOPC_2014_Not_Enough_Users.java ├── DMOPC_2014_Perfect_Timing.java ├── DMOPC_2014_Physics_Duel.java ├── DMOPC_2014_Picking_Berries.java ├── DMOPC_2014_Planning.java ├── DMOPC_2014_Revenge_Of_The_Bins.java ├── DMOPC_2014_Sand_Triangle.java ├── DMOPC_2014_Save_Nagato.cc ├── DMOPC_2014_Sawmill.java ├── DMOPC_2014_Sawmill_Scheme.cc ├── DMOPC_2014_Sawmill_Scheme.java ├── DMOPC_2014_Selective_Cutting.cc ├── DMOPC_2014_Signal_Hill.java ├── DMOPC_2014_Spacetime_Convergence_Cannons.java ├── DMOPC_2014_Spacetime_Generator.java ├── DMOPC_2014_Streetcars.java ├── DMOPC_2014_Surprise_Teleport.java ├── DMOPC_2014_Tides.java ├── DMOPC_2014_Tiles.java ├── DMOPC_2014_Trunk_In_Trunk.java ├── DMOPC_2014_VBG_String_Representation.cc ├── DMOPC_2014_Yokan.java ├── DMOPC_2014_Zen_Garden.java ├── DMOPC_2015_A_Classic_Problem.cc ├── DMOPC_2015_A_Classic_Problem.java ├── DMOPC_2015_A_Very_Very_Original_Problem.java ├── DMOPC_2015_Admin_War.java ├── DMOPC_2015_Admin_War_II.java ├── DMOPC_2015_Alarms.java ├── DMOPC_2015_All_Your_Base.java ├── DMOPC_2015_Araxxi.java ├── DMOPC_2015_Ariadnes_Thread.java ├── DMOPC_2015_BFS.java ├── DMOPC_2015_Bank_Burning.java ├── DMOPC_2015_Black_And_White_II.java ├── DMOPC_2015_CCO.java ├── DMOPC_2015_Cheesecake_Distribution.java ├── DMOPC_2015_Contagion.java ├── DMOPC_2015_Counting_Money.java ├── DMOPC_2015_D_Mails.java ├── DMOPC_2015_Dictionary.java ├── DMOPC_2015_Dimethylbenzene.java ├── DMOPC_2015_Double_XP_Weekend.java ├── DMOPC_2015_Event_Horizon.java ├── DMOPC_2015_Explooooosion.java ├── DMOPC_2015_Gala.java ├── DMOPC_2015_Gel_Bananas.java ├── DMOPC_2015_Graf_Zeppelin.cc ├── DMOPC_2015_Great_Sequence.java ├── DMOPC_2015_Grumpy_Dwarf.java ├── DMOPC_2015_Harbourmaster.java ├── DMOPC_2015_Harvest.java ├── DMOPC_2015_Itami_and_Candy.java ├── DMOPC_2015_Itami_and_Cipher.java ├── DMOPC_2015_Itami_and_Manga.java ├── DMOPC_2015_Itami_and_Squad.java ├── DMOPC_2015_Kabane_Apocalypse.cc ├── DMOPC_2015_Kabane_Apocalypse.java ├── DMOPC_2015_Kemonomimi_Competition.java ├── DMOPC_2015_Lelei_and_Contest.cc ├── DMOPC_2015_Lelei_and_Contest.java ├── DMOPC_2015_Lelei_and_Dragon_Scales.java ├── DMOPC_2015_Lethal.java ├── DMOPC_2015_Line_Graph.java ├── DMOPC_2015_MMORPG_II.java ├── DMOPC_2015_Magic.java ├── DMOPC_2015_Manhattan_Magnets.cc ├── DMOPC_2015_Manhattan_Magnets.java ├── DMOPC_2015_New_Key.java ├── DMOPC_2015_Not_A_Wall_Of_Text.java ├── DMOPC_2015_Origami.java ├── DMOPC_2015_Pandemic.java ├── DMOPC_2015_Personal_Assistant.java ├── DMOPC_2015_Pizza_Bag.java ├── DMOPC_2015_Quality_Scenes.java ├── DMOPC_2015_Redirection.java ├── DMOPC_2015_Reward_Reminiscence.java ├── DMOPC_2015_Scribe.java ├── DMOPC_2015_Steins_Number.java ├── DMOPC_2015_Sysadmin.java ├── DMOPC_2015_The_Big_Clock.java ├── DMOPC_2015_The_Faster_Way.java ├── DMOPC_2015_The_Gamblers_Legacy.java ├── DMOPC_2015_Tilt.java ├── DMOPC_2015_Total_Annihilation.java ├── DMOPC_2015_World_Line_Convergence.java ├── DMOPC_2016_A_Classic_Problem_Slow.java ├── Disjoint_Set_Test.cc ├── Fast_Factorial_Calculator.java ├── Fibonacci.java ├── Glenforest_Codefights.java ├── Glenforest_Equation_Solver.java ├── Glenforest_Fizz_Fuzz.java ├── Glenforest_Flying_Plushies.java ├── Glenforest_Friendship_Is_A_Number.java ├── Glenforest_Hearth.java ├── Glenforest_Hide_n_Seek.java ├── Glenforest_Marathon.java ├── Glenforest_Mostly_Talking.java ├── Glenforest_Nightmareathon.java ├── Glenforest_ORBIT.java ├── Glenforest_OR_Deal.java ├── Glenforest_PalinDrone.java ├── Glenforest_Pursuit_Of_Knowledge.java ├── Glenforest_Raider.cc ├── Glenforest_Soko_Boop.java ├── Glenforest_Speech.java ├── Glenforest_Stalactites.java ├── Glenforest_Stardust_Snow.cc ├── Glenforest_Stardust_Snow.java ├── Glenforest_Starry_Sky.java ├── Glenforest_TShirts.java ├── Glenforest_Tic_Tac_Moe.java ├── Glenforest_Waiting.java ├── Glenforest_Wow_Much_Parking_Lot.java ├── Halloween_Cat_Girls.java ├── Halloween_Dog_Girls.cc ├── Halloween_Rabbit_Girls.java ├── Joey_And_Biology.java ├── Kirito.cc ├── Lexicographically_Least_Substring.java ├── LinkedList.java ├── List_Minimum.java ├── MEC_P1.cc ├── MEC_P1.java ├── MEC_P2.java ├── MEC_P3.java ├── MEC_P4.cc ├── MEC_P4.java ├── MEC_P5.cc ├── MEC_P5.java ├── MEC_P6.cc ├── MEC_P6.java ├── MMCC_Esdeath.java ├── MMCC_Inaho.cc ├── MMCC_Kirito.java ├── MMCC_Tenri.java ├── MNYC_2017_2048.cc ├── MNYC_2017_ASCII_Art_II.cc ├── MNYC_2017_Bells.cc ├── MNYC_2017_Hurontario.cc ├── MNYC_2017_Removing_Christmas_Trees.cc ├── MNYC_2017_Skiing_Competition.java ├── Mackenize_Genetic_Probability.java ├── Mackenize_Jelly.cc ├── Mackenzie_Abdoof.java ├── Mackenzie_Dolls.java ├── Mackenzie_ECOO.java ├── Mackenzie_Jelly.java ├── Mackenzie_Love_Guru.cc ├── Mackenzie_Love_Guru.java ├── Mackenzie_Moores_Law.java ├── Mackenzie_Playlist_Panic.java ├── Mackenzie_Postcard.java ├── Mackenzie_Rocks.java ├── Matrix_Determinant.cc ├── Max_And_Cards.java ├── Message_To_Mars.cc ├── Momoka.cc ├── New_Year_2017_Christmas_Cards.cc ├── New_Year_2017_Christmas_Cozonac.cc ├── New_Year_2017_Christmas_Cozonac.java ├── New_Year_2017_Fibonacci_Presents.cc ├── New_Year_2017_Mr_N_And_Presents.cc ├── New_Year_2017_Peters_Escape.cc ├── New_Year_2017_The_Christmas_Swap.java ├── New_Year_Arithmetic_Snowman.java ├── New_Year_Cake_Balancing.java ├── New_Year_DIY_Christmas_Tree.java ├── New_Year_Eggnog_Dilemma.java ├── New_Year_Food_Selection.java ├── New_Year_Gift_Wrapping.java ├── New_Year_Invitation_Devastation.java ├── New_Year_Late_Christmas_Shopping.java ├── New_Year_Leftover_Eggnog.java ├── New_Year_Message_To_Mars.java ├── New_Year_Old_Christmas_Lights.java ├── New_Year_S_NO_wall.cc ├── New_Year_The_365_Days_of_Christmas.java ├── New_Year_Tiles.java ├── Nim.java ├── Perl_Golf.java ├── Phantom_The_Torture_Chamber.java ├── Pick_It.java ├── Postfix_Notation.java ├── Power_Eggs.java ├── SEED_Battle_Positions.java ├── STNBD_Claire_Elstein.java ├── STNBD_Ellis_Fahrengart.java ├── STNBD_Ellis_Fahrengart_Efficient.java ├── STNBD_Fianna_Ray_Ordesia.java ├── STNBD_Ren_Ashbell.java ├── STNBD_Rinslet_Laurenfrost.java ├── Segment_Tree_Test.cc ├── TLE_2016_Buying_Gifts.cc ├── TLE_2016_Christmas_Tree_Building.cc ├── TLE_2016_Cubes.cc ├── TLE_2016_Shepherding.cc ├── TLE_2016_Stack_Of_Presents.cc ├── TLE_Microwaves.java ├── TLE_Olympiads_Homework.java ├── TLE_Poetry.java ├── TLE_Power_Ranking.java ├── TLE_Prefix_Sum_Array.java ├── TLE_Rock_Paper_Scissors.cc ├── TLE_Rock_Paper_Scissors.java ├── TSOC_All_Out_War.java ├── TSOC_Dungeon_Crawling.java ├── The_Torture_Chamber.cc ├── VMSS_4_Nations_1_Secret.java ├── VMSS_A_New_Prime_Factorization.java ├── VMSS_Agriphilisophical_Data_Slaves.java ├── VMSS_Alexs_Bae.java ├── VMSS_Can_Shahir_Even_Get_There.java ├── VMSS_Chain_Rule.cc ├── VMSS_Cold_War_Telecom.cc ├── VMSS_Cold_War_Telecom.java ├── VMSS_Diana_Socializes.java ├── VMSS_Frank_And_Roads.java ├── VMSS_G.java ├── VMSS_GG.java ├── VMSS_GGG.cc ├── VMSS_GGG.java ├── VMSS_Good.java ├── VMSS_Head_Data_Slave_Applications.java ├── VMSS_Hello_Officer.java ├── VMSS_JHK.java ├── VMSS_Jayden_Eats_Chocolate.java ├── VMSS_Jayden_Plays_Video_Games.java ├── VMSS_Jayden_Studies_Trees.java ├── VMSS_Jayden_Watches_Videos.java ├── VMSS_Jeffrey_And_Frank_And_A_Lack_Of_Roads.java ├── VMSS_Jeffrey_And_Roads.java ├── VMSS_Jung_Goon.java ├── VMSS_Melanioana.java ├── VMSS_Ms_Theorem.java ├── VMSS_Multiple_Statements.java ├── VMSS_Perfect_Squares_For_Not_So_Perfect_Class.java ├── VMSS_Pollos.java ├── VMSS_Recruit.java ├── VMSS_Restoring_Reputation.java ├── VMSS_Russian_Palindrome_Cultivation.java ├── VMSS_Senpai_Help_Me.java ├── VMSS_Sets.java ├── VMSS_Shahir_In_A_Box.java ├── VMSS_Test_Scores.java ├── VMSS_Tests_Or_Test_Cases.java ├── VMSS_The_Melanie_Game.java ├── VMSS_The_Most_Important_Skill_In_Biology.java ├── VMSS_Tomb_Robbing.java ├── VMSS_Tree_Planting.cc ├── VMSS_Tree_Planting.java ├── VMSS_Uniting_The_Earth_Empire.java ├── VMSS_Whipping_Out_The_Old_Dictionary.java ├── Valentines_P1.java ├── Valentines_P2.java ├── Valentines_P3.java ├── Yokan.cc └── inaho.h ├── dwite ├── DWITE_2002_ABCs.java ├── DWITE_2002_Five_Ms.java ├── DWITE_2002_Money_Prize.java ├── DWITE_2002_Sales.java ├── DWITE_2005_Five_Digit_Divisibility.java ├── DWITE_2005_Game_Of_Life.java ├── DWITE_2005_Minesweeper.java ├── DWITE_2005_Odometer.java ├── DWITE_2005_Sum_Em_Up.java ├── DWITE_2006_Connect_4.java ├── DWITE_2006_Floppy_Disc.java ├── DWITE_2006_Points_On_A_line.java ├── DWITE_2006_Prime_Palindrome.java ├── DWITE_2006_UPC_Check_Digit.java ├── DWITE_2007_Cubes_In_A_Pyramid.java ├── DWITE_2007_Stacks_Of_Blocks.java ├── DWITE_2007_Vanilla_Primes.java ├── DWITE_2007_Velociraptor_Maze.java ├── DWITE_2007_Wheres_My_QWERTY.java ├── DWITE_2009_Lights_Out.cc ├── DWITE_2009_Super_Special_Awesome_Numbers.java ├── DWITE_2009_The_Missing_Link.java └── DWITE_2009_Trailing_Bears.java ├── ecoo ├── ECOO_2002_Count_Shapes.java ├── ECOO_2002_Diamonds.java ├── ECOO_2002_Serial_Number_Dates.java ├── ECOO_2002_Stack_Print.java ├── ECOO_2013_The_Luhn_Algorithm.java ├── ECOO_2014_Word_Wrap.java ├── ECOO_2015_R1_P1.java ├── ECOO_2015_R1_P2.java ├── ECOO_2015_R1_P3.java ├── ECOO_2015_R1_P4.java ├── ECOO_2016_R1_P1.java ├── ECOO_2016_R1_P2.java ├── ECOO_2016_R1_P3.java ├── ECOO_2016_R1_P4.java ├── ECOO_2016_R2_P1.java ├── ECOO_2016_R2_P2.java ├── ECOO_2016_R2_P3.java ├── ECOO_2016_R2_P4.java ├── ECOO_2016_R3_P1.java ├── ECOO_2016_R3_P2.java ├── ECOO_2016_R3_P3.java └── ECOO_2016_R3_P4.java ├── hackercup ├── FHC_2015_Qualification_Cooking_The_Books.java ├── FHC_2015_Qualification_Laser_Maze.java ├── FHC_2015_Qualification_New_Years_Resolution.java ├── FHC_2015_Round_1_Autocomplete.java ├── FHC_2015_Round_1_Corporate_Gifting.java ├── FHC_2015_Round_1_Homework.java ├── FHC_2015_Round_1_Winning_At_Sports.java ├── FHC_2015_Round_2_All_Critical.java ├── FHC_2015_Round_2_Autocomplete_Strikes_Back.java ├── FHC_2015_Round_2_Lazy_Sort.java ├── FHC_2015_Round_3_Gentrification.java ├── FHC_2016_Qualification_Boomerang_Constellations.java ├── FHC_2016_Qualification_High_Security.java ├── FHC_2016_Qualification_Text_Editor.java ├── FHC_2016_Qualification_The_Price_Is_Correct.java ├── FHC_2016_Round_1_Boomerang_Tournament.java ├── FHC_2016_Round_1_Coding_Contest_Creation.java ├── FHC_2016_Round_1_Laundro_Matt.java ├── FHC_2016_Round_1_Yachtzee.java ├── FHC_2016_Round_2_Boomerang_Decoration.java ├── FHC_2016_Round_2_Carnival_Coins.java ├── FHC_2016_Round_2_Snakes_And_Ladders.java ├── FHC_2017_Qualification_Fighting_The_Zombie.java ├── FHC_2017_Qualification_Lazy_Loading.java ├── FHC_2017_Qualification_Progress_Pie.java ├── FHC_2017_Round_1_Beach_Umbreallas.java ├── FHC_2017_Round_1_Fighting_The_Zombies.java ├── FHC_2017_Round_1_Manic_Moving.java ├── FHC_2017_Round_1_Pie_Progress.java └── FHC_2017_Round_2_Subtle_Sabotage.java ├── hackerearth ├── Clash_May_2016_P1.java ├── Clash_May_2016_P2.java ├── Clash_May_2016_P3.java ├── Clash_May_2016_P4.cc ├── Clash_May_2016_P4.java └── Clash_May_2016_P5.java ├── hackerrank ├── Almost_Sorted.java ├── Bigger_Is_Greater.java ├── Bike_Racers.java ├── Blackrock_A.java ├── Blackrock_B.java ├── Blackrock_C.java ├── Blackrock_D.java ├── Blackrock_E.java ├── Blackrock_F.java ├── Blackrock_G.java ├── Blackrock_H.java ├── Breadth_First_Search_Shortest_Reach.java ├── Bytelandian_Tours.java ├── Chief_Hopper.java ├── Clique.java ├── Coin_On_The_Table.java ├── Common_Child.java ├── Connected_Cell_In_A_Grid.java ├── Count_Luck.java ├── Counting_Permutations.java ├── Crab_Graphs.java ├── Cross_The_River.java ├── Cut_The_Tree.java ├── Debug.java ├── Dijkstra_Shortest_Reach_2.java ├── Encryption.java ├── Epiccode_A.java ├── Epiccode_B.java ├── Epiccode_C.java ├── Even_Tree.java ├── Floyd_City_Of_Blinding_Lights.java ├── Garden_Planning.java ├── Hacker_Country.java ├── Jack_Goes_To_Rapture.java ├── Journey_To_The_Moon.java ├── June_2015_A.java ├── June_2015_B.java ├── June_2015_C.java ├── June_2015_D.java ├── Kingdom_Connectivity.java ├── Kruskal_MST_Really_Special_Subtree.java ├── Kth_Ancestor.java ├── Longest_Common_Subsequence.java ├── Longest_Increasing_Subsequence.java ├── Matrix.java ├── Max_Min.java ├── Maximize_Sum.java ├── Missing_Numbers.java ├── Pairs.java ├── Palindrome_Index.java ├── Prims_MST_Special_Subtree.java ├── Reverse_Shuffle_Merge.java ├── Road_Network.java ├── Road_Reform.java ├── Rust_And_Murderer.java ├── Sherlock_And_Anagrams.java ├── Sherlock_And_Cost.java ├── Sherlock_And_Pairs.java ├── Similar_Pair.java ├── Snakes_And_Ladders_The_Quickest_Way_Up.java ├── String_Similarity.java ├── Subset_Component.java ├── Substring_Diff.java ├── Task_Scheduling.java ├── Team_Formation.java ├── University_Codesprint_2_A.java ├── University_Codesprint_2_B.java ├── University_Codesprint_2_C.java ├── University_Codesprint_2_D.java ├── University_Codesprint_2_E.java ├── University_Codesprint_2_G.java ├── WOC_20_A.java ├── WOC_20_B.java ├── WOC_20_C.java ├── WOC_20_D.java ├── WOC_20_E.java ├── WOC_20_F.cc ├── WOC_20_F.java ├── WOC_28_A.java ├── WOC_28_B.java ├── WOC_28_C.java ├── WOC_28_D.cc ├── WOC_28_D.java ├── WOC_28_E.cc ├── WOC_28_E.java ├── WOC_28_F.cc ├── WOC_28_F.java ├── WOC_28_G.cc ├── WOC_28_G.java ├── WOC_29_A.java ├── WOC_29_B.java ├── WOC_29_C.java ├── WOC_29_D.java ├── WOC_29_E.java ├── WOC_29_F.java ├── WOC_29_F_Generator.java ├── WOC_29_G.java ├── WOC_29_G_Suboptimal.java ├── WOC_30_A.cc ├── WOC_30_B.cc ├── WOC_30_C.cc ├── WOC_30_D.java ├── WOC_30_E.cc ├── WOC_30_E.java ├── WOC_30_F.java ├── WOC_30_G.java └── Xor_And_Sum.java ├── ioi ├── IOI_1994_Clocks.java ├── IOI_1994_The_Buses.java ├── IOI_1994_The_Castle.java ├── IOI_1994_The_Triangle.java ├── IOI_1995_Barcodes.java ├── IOI_1995_Letter_Game.java ├── IOI_1995_Packing_Rectangles.java ├── IOI_1995_Shopping_Offers.java ├── IOI_1995_Street_Race.java ├── IOI_1995_Word_Chains.java ├── IOI_1996_Job_Processing.java ├── IOI_1996_Longest_Prefix.java ├── IOI_1996_Network_Of_Schools.java ├── IOI_1996_Sorting_A_Three_Valued_Sequence.java ├── IOI_1998_Camelot.java ├── IOI_1998_Contact.java ├── IOI_1998_Magic_Squares.java ├── IOI_1998_Party_Lamps.java ├── IOI_1998_Picture.cc ├── IOI_1998_Polygon.java ├── IOI_1998_Starry_Night.java ├── IOI_1999_A_Strip_Of_Land.cc ├── IOI_1999_A_Strip_Of_Land.java ├── IOI_1999_Little_Shop_Of_Flowers.java ├── IOI_2000_Car_Parking.java ├── IOI_2000_Palindrome.java ├── IOI_2000_Post_Office.java ├── IOI_2000_Walls.java ├── IOI_2001_Mobile_Phones.java ├── IOI_2002_Batch_Scheduling.cc ├── IOI_2002_Bus_Terminals.cc ├── IOI_2002_Bus_Terminals.java ├── IOI_2002_The_Troublesome_Frog.java ├── IOI_2002_Utopia_Divided.java ├── IOI_2003_Amazing_Robots.java ├── IOI_2003_Balancing_Act.java ├── IOI_2004_Artemis.java ├── IOI_2004_Empodia.cc ├── IOI_2004_Empodia.java ├── IOI_2004_Farmers.java ├── IOI_2004_Hermes.cc ├── IOI_2004_Hermes.java ├── IOI_2004_Phidias.java ├── IOI_2005_Birthday.cc ├── IOI_2005_Birthday.java ├── IOI_2005_Garden.cc ├── IOI_2005_Mean_Sequence.java ├── IOI_2005_Mountains.java ├── IOI_2005_Polish_Flag.cc ├── IOI_2005_Polish_Flag.java ├── IOI_2005_Rivers.java ├── IOI_2006_Deciphering_Mayan_Writing.java ├── IOI_2006_Pyramid.java ├── IOI_2006_Pyramid_2.java ├── IOI_2006_The_Valley_Of_Mexico.java ├── IOI_2007_Flood.java ├── IOI_2007_Miners.java ├── IOI_2007_Pairs.java ├── IOI_2007_Sails.java ├── IOI_2008_Islands.cc ├── IOI_2008_Islands.java ├── IOI_2008_Linear_Garden.cc ├── IOI_2008_Linear_Garden.java ├── IOI_2008_Linear_Garden_2.java ├── IOI_2008_Teleporters.cc ├── IOI_2008_Teleporters.java ├── IOI_2008_Type_Printer.java ├── IOI_2009_Garage.java ├── IOI_2009_Hiring.java ├── IOI_2009_Mecho.java ├── IOI_2009_Museum.java ├── IOI_2009_POI.java ├── IOI_2009_Raisins.java ├── IOI_2009_Salesman.java ├── IOI_2010_Cluedo.cc ├── IOI_2010_Hotter_Colder │ ├── grader.cc │ ├── grader.h │ ├── grader.in │ ├── hottercolder.cc │ └── hottercolder.h ├── IOI_2010_Memory.cc ├── IOI_2010_Quality_Of_Living.java ├── IOI_2010_Traffic_Congestion.java ├── IOI_2010_Traffic_Congestion2.java ├── IOI_2011_Crocodile_Underground_City.cc ├── IOI_2011_Crocodile_Underground_City.java ├── IOI_2011_Dancing_Elephants.cc ├── IOI_2011_Dancing_Elephants.java ├── IOI_2011_Hottest.java ├── IOI_2011_Race.cc ├── IOI_2011_Race.java ├── IOI_2011_Rice_Hub.cc ├── IOI_2011_Rice_Hub.java ├── IOI_2011_Tropical_Garden.cc ├── IOI_2011_Tropical_Garden.java ├── IOI_2012_Crayfish_Scrivener.cc ├── IOI_2012_Crayfish_Scrivener.java ├── IOI_2012_Ideal_City.java ├── IOI_2012_Jousting_Tournament.java ├── IOI_2012_Parachute_Rings.java ├── IOI_2012_Pebbling_Odometer │ ├── GRID_FILE.txt │ ├── SOLUTION.txt │ └── odometer.py ├── IOI_2012_The_Last_Supper │ ├── Main.cc │ ├── advice.txt │ ├── advisor.cc │ ├── advisor.h │ ├── assistant.cc │ ├── assistant.h │ ├── example.txt │ └── grader.cc ├── IOI_2013_Art_Class.java ├── IOI_2013_Cave.cc ├── IOI_2013_Dreaming.java ├── IOI_2013_Game.java ├── IOI_2013_Robots.cc ├── IOI_2013_Robots.java ├── IOI_2013_Wombats.cc ├── IOI_2013_Wombats.java ├── IOI_2014_Friend.cc ├── IOI_2014_Friend.java ├── IOI_2014_Game.cc ├── IOI_2014_Gondola.cc ├── IOI_2014_Gondola.java ├── IOI_2014_Holiday.cc ├── IOI_2014_Holiday.java ├── IOI_2014_Rails.cc ├── IOI_2014_Square.java ├── IOI_2014_Station.java ├── IOI_2014_Tile.java ├── IOI_2014_Wall.java ├── IOI_2014_Walls.cc ├── IOI_2015_Boxes.cc ├── IOI_2015_Boxes.java ├── IOI_2015_Horses.cc ├── IOI_2015_Horses.java ├── IOI_2015_Sorting.cc ├── IOI_2015_Sorting.java ├── IOI_2015_Teams.cc ├── IOI_2015_Teams.java ├── IOI_2016_Scales │ ├── grader.cc │ ├── graderlib.c │ ├── scales.cc │ ├── scales.h │ ├── scales.in │ └── scales.out └── IOI_2016_Towns │ ├── Main.cc │ ├── grader.cc │ ├── graderlib.c │ ├── towns.h │ ├── towns.in │ └── towns.out ├── misc ├── 2spooky4me.cc ├── ACSL_2009_Rank.java ├── ACSL_2009_Reversi.java ├── APIO_2007_Zoo.java ├── APIO_2009_Digging_For_Oil.java ├── APIO_2009_The_Great_ATM_Robbery.java ├── APIO_2009_The_Great_ATM_Robbery_2.java ├── APIO_2010_Commando.cc ├── APOI_2008_Roads.cc ├── APOI_2008_Roads.java ├── APOI_2009_ATM.cc ├── A_Game.java ├── A_Noisy_Class.java ├── A_Romantic_Dinner_Outing.java ├── A_Times_B.cc ├── Adding_Reversed_Numbers.java ├── Aplusb.java ├── BOI_2009_Boxen.cc ├── BOI_2009_Diamonds.cc ├── BOI_2009_Diamonds.java ├── BOI_2009_Diamonds_2.java ├── BOI_2009_Frog_Mutants.cc ├── BOI_2009_Frog_Mutants.java ├── BOI_2009_Minesweeper.java ├── BOI_2009_Money_Boxen.java ├── BOI_2009_Rectangle.cc ├── BOI_2009_Rectangle.java ├── Battleships.java ├── Benergy_Transfer.cc ├── Benergy_Transfer.java ├── Betty_Candy_Canes.java ├── Boxdropper.cc ├── Boxdropper.java ├── Bus_Stop.java ├── Busy_Schedule.java ├── CERC_2007_Strange_Billboard.cc ├── Cable_TV.java ├── Caporegime.cc ├── Checkerboard_Summation.java ├── Checkerboard_Summation_Hard.java ├── Chocolate_Bar.java ├── Clique.java ├── Coin_Change.java ├── Coins.cc ├── Connected_Components.java ├── Counting_Paths.java ├── Cyclipian_Census.java ├── Cyclopian_Cash.java ├── Cyclopian_Puzzle.cc ├── Cyclopian_Puzzle.java ├── Directed_Acyclic_Path.java ├── Distinct_Prime_Factors.cc ├── Distinct_Prime_Factors.java ├── Divisibility_Rules.java ├── Dominoes.java ├── Dynamic_LCA.cc ├── Encryption_Grid.java ├── Factorial_Sum_List.java ├── Foxlings.java ├── Geometric_Sequence.java ├── Good_Aim.java ├── Good_Celebration.java ├── Good_Code.java ├── Good_Code_2.java ├── Good_Debugging.cc ├── Good_Inflation.java ├── Good_Predictions.java ├── Good_Strategy.java ├── Good_Travels.cc ├── Guess_The_Number.java ├── Hard_Question.java ├── Hole_In_The_Bucket.java ├── Intervals.cc ├── Intervals.java ├── JOI_2014_Secret.cc ├── King_Graff_Defense.cc ├── King_Graff_Tolls.cc ├── King_Graffs_Defense.java ├── King_Graffs_Trip.java ├── King_Graffs_Trip_2.java ├── MITACM_A_City_Of_Skyscrapers.java ├── MMM_Benergy_Transfer.java ├── Machined_Surfaces.java ├── Main.java ├── Making_The_Grade.java ├── Math_On_Titan.java ├── Matrix.cc ├── MaximumSum.java ├── Median.java ├── Mirrored_Pairs.java ├── Mispelling.java ├── NEERC_2010_Ideal_Path.java ├── Non_space_separated.java ├── Pie_Shop.java ├── Presents.java ├── Primes.java ├── Primes_2.java ├── Primes_3.cc ├── Primes_3.java ├── Revenge_Of_The_Digger.java ├── Revenge_Of_The_Digger_2.java ├── Rock_Climbing.java ├── RootSolver.cc ├── RootSolver.java ├── Sales.cc ├── Scansion.java ├── Security_Cameras.java ├── SegmentTreeTest.java ├── Shortest_Path.java ├── Shortest_Path_Adjacency.java ├── Sleigh_Ride.java ├── Sorting.java ├── Subway_Routes.java ├── System_Solver.java ├── TC.java ├── The_Cake_Is_A_Dessert.java ├── The_Codefather.java ├── The_Fox_And_The_Wolf.cc ├── The_Fox_And_The_Wolf.java ├── The_Unique_MST.java ├── TooSpookyForMe.java ├── Traffic_Lights.java ├── Travelling_Salesman.java ├── Trees.java ├── Triple_Fat_Ladies.java ├── UTS_Open_2014_Second_MST_E.java ├── UTS_Open_2014_Second_MST_V.java ├── UTS_Open_P2_Generation.java ├── UTS_Open_P2_Solution.java ├── University_Of_Waterloo_XOR.java ├── Vincent_Massey_Senior_A.java ├── Vincent_Massey_Senior_B.java ├── Vincent_Massey_Senior_C.java ├── Vincent_Massey_Senior_D.java ├── Virtuoso.java ├── ZOJ_2860_Breaking_Strings.cc └── threenplus1.java ├── nobrainers ├── Nobrainers_2014_A.java ├── Nobrainers_2014_B.java ├── Nobrainers_2014_C.java ├── Nobrainers_2014_D.java └── Nobrainers_2014_G.java ├── noi ├── NOI_1997_Optimal_Routing.java ├── NOI_1997_Perfect_Tour.java ├── NOI_2000_Ceramic_Necklace.java ├── NOI_2000_Trie.java ├── NOI_2001_Food_Chain.java ├── NOI_2002_Island_Of_Caveman.java ├── NOI_2002_The_Greedy_Kuzuryu.java ├── NOI_2004_The_Depressed_Cashier.cc ├── NOI_2004_The_Depressed_Cashier.java ├── NOI_2005_Maintaining_The_Sequence.cc ├── NOI_2005_Maintaining_The_Sequence.java ├── NOI_2006_Maximum_Profit.java ├── NOI_2007_Necklace_Factory.cc ├── NOI_2011_Road_Construction.cc ├── NOI_2011_Road_Construction.java ├── NOI_2012_Random_Number_Generator.java ├── NOI_2014_Enchanted_Forest.cc └── NOI_2014_Enchanted_Forest_2.cc ├── pegtest ├── Peg_Test_2014_A_Secret_Santa.java ├── Peg_Test_2014_A_Trick_Or_Treat.java ├── Peg_Test_2014_Assembly_Elves.java ├── Peg_Test_2014_Assembly_Elves_2.java ├── Peg_Test_2014_B_Brap_Lesh_Mafia.java ├── Peg_Test_2014_C_2spooky4me.java ├── Peg_Test_2014_D_Prime_Street.java ├── Peg_Test_2014_E_Stingy_Candyman.java └── Peg_Test_2014_Gift_Delivery.java ├── poj └── POJ_1019.cc ├── quora ├── RelatedQuestions.java └── Upvotes.java ├── smac ├── SMAC_2008_Befungulator.java ├── SMAC_2008_Cross_Roads.cc ├── SMAC_2008_Crossroads.java ├── SMAC_2008_Daycare.java ├── SMAC_2008_Digging_For_Gold.java ├── SMAC_2008_Eliminanagram.java ├── SMAC_2008_Infinite_Degrees.cc ├── SMAC_2008_Infinite_Degrees.java ├── SMAC_2008_Intelligent_Stats.cc ├── SMAC_2008_Intelligent_Stats.java ├── SMAC_2008_Jumpscotch.java ├── SMAC_2008_Stock_Market_II.cc ├── SMAC_2008_The_Factor_Game.cc └── SMAC_2008_The_Factor_Game.java ├── spoj ├── DynamicLca.cc ├── DynamicLca.java ├── Increasing_Subsequence.java ├── Mkthnum.cc ├── Mkthnum.java └── SPOJ_2486_Apple_Tree.cc ├── usaco ├── Revenge_Of_The_Clocks.cc ├── Revenge_Of_The_Clocks_Generator.cc ├── USACO_2011_Above_The_Median.java ├── USACO_2011_Above_The_Median_2.java ├── USACO_2011_Awkward_Digits.java ├── USACO_2011_Binary_Sudoku.java ├── USACO_2011_Contest_Timing.java ├── USACO_2011_Cow_Beauty_Pageant.java ├── USACO_2011_Cow_Lineup.java ├── USACO_2011_Cow_Lineup_2.java ├── USACO_2011_Cow_Photography.cc ├── USACO_2011_Cow_Photography.java ├── USACO_2011_Cow_Photography_2.java ├── USACO_2011_Cow_Sick.java ├── USACO_2011_Cow_Steeplechase.java ├── USACO_2011_Escaping_The_Farm.java ├── USACO_2011_Grass_Planting.cc ├── USACO_2011_Hay_Bale.java ├── USACO_2011_Roadblock.java ├── USACO_2011_Simplifying_The_Farm.java ├── USACO_2011_Tile_Exchanging.java ├── USACO_2011_Umbrella_for_Cows.java ├── USACO_2012_Balanced_Cow_Breeds.java ├── USACO_2012_Balanced_Trees.cc ├── USACO_2012_Bale_Share.java ├── USACO_2012_Bookshelf_Silver.java ├── USACO_2012_Bovine_Alliance.cc ├── USACO_2012_Bovine_Alliance.java ├── USACO_2012_Clumsy_Cow.java ├── USACO_2012_Connect_The_Cows.java ├── USACO_2012_Cow_Coupons.java ├── USACO_2012_Cow_IDs.java ├── USACO_2012_Cows_In_A_Row.java ├── USACO_2012_Distant_Pastures.java ├── USACO_2012_Find_The_Cow.java ├── USACO_2012_Flowerpot.java ├── USACO_2012_Gifts.java ├── USACO_2012_Grazing_Patterns.java ├── USACO_2012_Haybale_Restacking.java ├── USACO_2012_Horseshoes.java ├── USACO_2012_Islands.java ├── USACO_2012_Jan_Haybale_Stacking.java ├── USACO_2012_Landscaping.java ├── USACO_2012_Meet_And_Greet.java ├── USACO_2012_Milk_Routing.java ├── USACO_2012_Moo.java ├── USACO_2012_Mountain_Climbing.java ├── USACO_2012_Nearby_Cows.java ├── USACO_2012_Overplanting_Bronze.java ├── USACO_2012_Overplanting_Silver.java ├── USACO_2012_Relocation.java ├── USACO_2012_Rope_Folding.java ├── USACO_2012_Scrambled_Letters.java ├── USACO_2012_Times_17.cc ├── USACO_2012_Times_17.java ├── USACO_2012_Tractor.java ├── USACO_2012_Typo.java ├── USACO_2012_Wifi_Setup.java ├── USACO_2013_Bessie_Slows_Down.java ├── USACO_2013_Blink.java ├── USACO_2013_Breed_Assignment.java ├── USACO_2013_Breed_Proximity.java ├── USACO_2013_Combination_Lock.java ├── USACO_2013_Cow_Baseball.java ├── USACO_2013_Cow_Crossing.java ├── USACO_2013_Cow_Lineup.java ├── USACO_2013_Cow_Race.java ├── USACO_2013_Crowded_Cows.java ├── USACO_2013_Empty_Stalls.java ├── USACO_2013_Farm_Painting.java ├── USACO_2013_Feb_Milk_Scheduling.java ├── USACO_2013_Fuel_Economy.java ├── USACO_2013_Fuel_Economy_2.java ├── USACO_2013_Goldilocks_And_The_N_Cows.java ├── USACO_2013_Island_Travels.java ├── USACO_2013_Island_Travels_2.java ├── USACO_2013_Lairs_And_Truth_Tellers.java ├── USACO_2013_Luxury.java ├── USACO_2013_Luxury_River_Cruise.java ├── USACO_2013_Message_Relay.java ├── USACO_2013_Milk_Scheduling.java ├── USACO_2013_No_Change.java ├── USACO_2013_Optimal_Milking.cc ├── USACO_2013_Painting_The_Fence.java ├── USACO_2013_Painting_The_Fence_Silver.java ├── USACO_2013_Party_Invitation.java ├── USACO_2013_Perimeter_Bronze.java ├── USACO_2013_Perimeter_Silver.java ├── USACO_2013_Photo.java ├── USACO_2013_Pogo_Cow.java ├── USACO_2013_Poker_Hands.java ├── USACO_2013_Poker_Hands_2.java ├── USACO_2013_Record_Keeping.java ├── USACO_2013_Seating.cc ├── USACO_2013_The_Cow_Run.java ├── USACO_2013_Tractor.java ├── USACO_2013_Vacation_Planning.java ├── USACO_2013_Vacation_Planning_2.java ├── USACO_2013_Vacation_Planning_Gold.cc ├── USACO_2013_Vacation_Planning_Gold.java ├── USACO_2013_Vacation_Planning_Gold_2.java ├── USACO_2013_Whats_Up_With_Gravity.java ├── USACO_2013_Wormholes.java ├── USACO_2014_Auto_Complete.java ├── USACO_2014_Balanced_Teams.java ├── USACO_2014_Cow_Art.java ├── USACO_2014_Cow_Decathlon.cc ├── USACO_2014_Cow_Decathlon.java ├── USACO_2014_Cow_Decathlon_2.java ├── USACO_2014_Cross_Country_Skiing.java ├── USACO_2014_Decorating_The_Pastures.java ├── USACO_2014_Dueling_GPS.java ├── USACO_2014_Fair_Photography.java ├── USACO_2014_Fair_Photography_Bronze.java ├── USACO_2014_Fair_Photography_Silver.java ├── USACO_2014_Guard_Mark.java ├── USACO_2014_Learning_By_Example.java ├── USACO_2014_Mirror_Field.java ├── USACO_2014_Mooo_Moo.java ├── USACO_2014_Odometer_Bronze.java ├── USACO_2014_Recording_The_Moolympics.java ├── USACO_2014_Reordering_The_Cows.java ├── USACO_2014_Sabotage.java ├── USACO_2014_Secret_Code.java ├── USACO_2014_Secret_Code_Silver.java ├── USACO_2014_Ski_Course_Design.java ├── USACO_2014_Ski_Course_Rating.java ├── USACO_2014_The_Lazy_Cow_Bronze.java ├── USACO_2014_The_Lazy_Cow_Silver.java ├── USACO_2014_Watering_The_Fields.java ├── USACO_2015_262144.cc ├── USACO_2015_COW.java ├── USACO_2015_Censoring_Bronze.cc ├── USACO_2015_Censoring_Bronze.java ├── USACO_2015_Censoring_Bronze_2.java ├── USACO_2015_Censoring_Gold.java ├── USACO_2015_Censoring_Silver.cc ├── USACO_2015_Censoring_Silver.java ├── USACO_2015_Cow_Hopscotch_Bronze.java ├── USACO_2015_Cow_Hopscotch_Gold.cc ├── USACO_2015_Cow_Hopscotch_Gold.java ├── USACO_2015_Cow_Hopscotch_Gold_2.java ├── USACO_2015_Cow_Hopscotch_Silver.java ├── USACO_2015_Cow_Routing.java ├── USACO_2015_Cow_Routing_2.java ├── USACO_2015_Cow_Routing_Silver.java ├── USACO_2015_Grass_Cownoisseur.java ├── USACO_2015_Its_All_About_The_Base.java ├── USACO_2015_Meeting_Time.java ├── USACO_2015_Moovie_Mooving.cc ├── USACO_2015_Moovie_Mooving.java ├── USACO_2015_Stampede.java ├── USACO_2015_Stampede_Good.java ├── USACO_2015_Superbull.java ├── USACO_2015_Superbull_2.java ├── USACO_2015_Trapped_In_The_Haybales.java ├── USACO_2016_Building_A_Tall_Barn.cc ├── USACO_2016_Lots_Of_Triangles.cc ├── USACO_2016_Promotion_Counting.cc ├── USACO_2016_Robotic_Cow_Herd.cc ├── USACO_2016_Subsequence_Reversal.cc ├── USACO_2016_Team_Building.cc └── USACO_Revenge_of_the_Clocks.java ├── usaco_other ├── ariprog.java ├── balancing.java ├── barn1.java ├── beads.java ├── cbarn.java ├── censor.java ├── combo.java ├── cowjog_bronze.java ├── cowjog_gold.java ├── cowjog_silver.java ├── cowrect.java ├── crosswords.java ├── dream.java ├── dualpal.java ├── feast.java ├── fencedin.java ├── fortmoo.java ├── friday.java ├── gift1.java ├── grass.java ├── guard.java ├── haybales.java ├── hopscotch.java ├── learning.java ├── marathon_bronze.java ├── marathon_gold.java ├── marathon_silver.java ├── maxflow.java ├── milk.java ├── milk2.java ├── milk3.java ├── movie.java ├── palpath.java ├── palsquare.java ├── piggyback.java ├── ride.java ├── skidesign.java ├── transform.java ├── trapped_gold.java └── wormhole.java ├── utsopen ├── Second_MST.cc ├── Second_MST.cpp.save ├── Second_MST_Brute_Force_V.cc ├── Second_MST_Brute_Forces.cc ├── Second_MST_Brute_Forces.cpp.save ├── Second_MST_Generator.cc ├── Second_MST_Generator.cpp.save ├── Second_MST_Test_Data.cc ├── Second_MST_Test_Data.cpp.save ├── UTS - P2 - 10.in ├── UTS - P2 - 10.out ├── UTS - P2 - 11.in ├── UTS - P2 - 11.out ├── UTS - P2 - 12.in ├── UTS - P2 - 12.out ├── UTS - P2 - 13.in ├── UTS - P2 - 13.out ├── UTS - P2 - 14.in ├── UTS - P2 - 14.out ├── UTS - P2 - 15.in ├── UTS - P2 - 15.out ├── UTS - P2 - 16.in ├── UTS - P2 - 16.out ├── UTS - P2 - 17.in ├── UTS - P2 - 17.out ├── UTS - P2 - 18.in ├── UTS - P2 - 18.out ├── UTS - P2 - 19.in ├── UTS - P2 - 19.out ├── UTS - P2 - 20.in ├── UTS - P2 - 20.out ├── UTS - P2 - 21.in ├── UTS - P2 - 21.out ├── UTS - P2 - 22.in ├── UTS - P2 - 22.out ├── UTS - P2 - 23.in ├── UTS - P2 - 23.out ├── UTS - P2 - 24.in ├── UTS - P2 - 24.out ├── UTS - P2 - 25.in ├── UTS - P2 - 25.out ├── UTS - P2 - 26.in ├── UTS - P2 - 26.out ├── UTS - P2 - 6.in ├── UTS - P2 - 6.out ├── UTS - P2 - 7.in ├── UTS - P2 - 7.out ├── UTS - P2 - 8.in ├── UTS - P2 - 8.out ├── UTS - P2 - 9.in └── UTS - P2 - 9.out ├── uva └── Uva_11183_Teen_Girl_Squad.java ├── woburn ├── Woburn_Challenge_1995_Coded_Message.java ├── Woburn_Challenge_1995_Round_Numbers.java ├── Woburn_Challenge_1995_Smallest_Latin_Square.java ├── Woburn_Challenge_1996_Different_Base_Multiplication.java ├── Woburn_Challenge_1996_Hidden_Geography.java ├── Woburn_Challenge_1996_Plentiful_Paths.java ├── Woburn_Challenge_1996_Row_And_Column.java ├── Woburn_Challenge_1996_Row_and_Column_Compressions.java ├── Woburn_Challenge_1997_Typing.java ├── Woburn_Challenge_1998_Do_Or_Do_Not_There_Is_No_Try.java ├── Woburn_Challenge_1998_Return_Of_The_Plachta.java ├── Woburn_Challenge_1998_Y2K.java ├── Woburn_Challenge_1998_Y2K_Why_Too_Bad.java ├── Woburn_Challenge_1999_Fight_Club.java ├── Woburn_Challenge_1999_Goldfinger.java ├── Woburn_Challenge_1999_Good_Will_Hunting.java ├── Woburn_Challenge_1999_Mission_Impossible_2.java ├── Woburn_Challenge_1999_The_Phantom_Lucas.java ├── Woburn_Challenge_1999_The_Wedding_Juicer.java ├── Woburn_Challenge_1999_The_Wedding_Juicer_2.java ├── Woburn_Challenge_1999_Where_In_The_World_Is_Will_And_Ethan_Hunt.java ├── Woburn_Challenge_2001_Austin_Powers_III_Time_To_Get_Medieval.java ├── Woburn_Challenge_2001_Back_To_The_Future.java ├── Woburn_Challenge_2001_Blind_Date.java ├── Woburn_Challenge_2001_Cool_Runnings.java ├── Woburn_Challenge_2001_Mission_Impossible_3.java ├── Woburn_Challenge_2001_The_Man_With_The_Golden_Eye.java ├── Woburn_Challenge_2001_The_Rock.java ├── Woburn_Challenge_2001_Who_Wants_To_Be_As_Rich_As_Regis.java ├── Woburn_Challenge_2002_A_Planning_Session.java ├── Woburn_Challenge_2002_Cow_Bot.java ├── Woburn_Challenge_2002_Dark_Lord.java ├── Woburn_Challenge_2002_Deploying_Troops.java ├── Woburn_Challenge_2002_Its_Party_Time.java ├── Woburn_Challenge_2002_Obstacles_Galore.java ├── Woburn_Challenge_2002_Old_MacDonalds_Farm.java ├── Woburn_Challenge_2007_BitStrings.java ├── Woburn_Challenge_2007_Strategy_Meeting.java ├── Woburn_Challenge_2015_A_New_Hope.java ├── Woburn_Challenge_2015_Attack_Of_The_Clones.java ├── Woburn_Challenge_2015_Battle_Predictions.java ├── Woburn_Challenge_2015_Chocolate_Milk.java ├── Woburn_Challenge_2015_Coded_Paper.java ├── Woburn_Challenge_2015_Contest_Sites.java ├── Woburn_Challenge_2015_Detective_Work.java ├── Woburn_Challenge_2015_Do_You_Know_Your_Woburn_Colors.java ├── Woburn_Challenge_2015_Driving_Range.java ├── Woburn_Challenge_2015_Electroshock_Therapy.java ├── Woburn_Challenge_2015_Energy_Absorption.java ├── Woburn_Challenge_2015_Force_Awakens_Senior.cc ├── Woburn_Challenge_2015_FuzzBiz.java ├── Woburn_Challenge_2015_Grouping_Recruits.java ├── Woburn_Challenge_2015_Hydration.java ├── Woburn_Challenge_2015_Jazz_Concert.java ├── Woburn_Challenge_2015_LexCorp_Infiltration.java ├── Woburn_Challenge_2015_Lex_Luthors_Landmines.cc ├── Woburn_Challenge_2015_Lex_Luthors_Landmines.java ├── Woburn_Challenge_2015_Mission_Briefing.java ├── Woburn_Challenge_2015_Red_Sun_Simulator.java ├── Woburn_Challenge_2015_Rescue_Mission.java ├── Woburn_Challenge_2015_Return_Of_The_Jedi.java ├── Woburn_Challenge_2015_Revenge_Of_The_Sith.java ├── Woburn_Challenge_2015_Server_Hacking.java ├── Woburn_Challenge_2015_Shootout.java ├── Woburn_Challenge_2015_Stakeout.java ├── Woburn_Challenge_2015_Target_Practice.java ├── Woburn_Challenge_2015_Telling_Time.java ├── Woburn_Challenge_2015_The_Empire_Strikes_Back.java ├── Woburn_Challenge_2015_The_Force_Awakens_Junior.java ├── Woburn_Challenge_2015_The_Force_Awakens_Senior.java ├── Woburn_Challenge_2015_The_Oxford_Comma.java ├── Woburn_Challenge_2015_The_Phantom_Menace.java ├── Woburn_Challenge_2015_Trip_Budgeting.java ├── Woburn_Challenge_2015_Vertical_Posting.java ├── Woburn_Challenge_2015_Wildcat_Wildcards.java ├── Woburn_Challenge_2015_Woburn_Workload.java ├── Woburn_Challenge_2015_World_Tour.cc ├── Woburn_Challenge_2015_World_Tour.java ├── Woburn_Challenge_2016_A_Spooky_Season.cc ├── Woburn_Challenge_2016_Alucard's_Quest.cc ├── Woburn_Challenge_2016_Away_Mission.java ├── Woburn_Challenge_2016_Cutting_Edge.java ├── Woburn_Challenge_2016_Diplomacy.java ├── Woburn_Challenge_2016_EHC.java ├── Woburn_Challenge_2016_Frankenstein's_Monster.cc ├── Woburn_Challenge_2016_Hide_And_Seek.cc ├── Woburn_Challenge_2016_Most_Illogical.java ├── Woburn_Challenge_2016_Pokewarehouses.java ├── Woburn_Challenge_2016_Puzzle_Rooms.java ├── Woburn_Challenge_2016_Replay_Value.cc ├── Woburn_Challenge_2016_Replay_Value.java ├── Woburn_Challenge_2016_TP.cc ├── Woburn_Challenge_2016_The_Elite_N.java ├── Woburn_Challenge_2016_The_Perfect_Mate.java ├── Woburn_Challenge_2016_Training_Regimen.java ├── Woburn_Challenge_2016_Tricky's_Treats.cc └── Woburn_Challenge_2016_Turbolift_Testing.java └── yandex_warm_up_2015 ├── A.java ├── B.java ├── C.java └── D.java /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | ColumnLimit: 100 3 | --- 4 | Language: Cpp 5 | AccessModifierOffset: -1 6 | AlignAfterOpenBracket: DontAlign 7 | AllowShortFunctionsOnASingleLine: Empty 8 | IndentCaseLabels: true 9 | --- 10 | Language: Java 11 | AllowShortFunctionsOnASingleLine: Empty 12 | IndentCaseLabels: true 13 | ReflowComments: false 14 | --- 15 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore all no extension files except for LICENSE 2 | * 3 | !/**/ 4 | !*.* 5 | !LICENSE-MIT 6 | !LICENSE-APACHE 7 | 8 | # Windows image file caches 9 | Thumbs.db 10 | ehthumbs.db 11 | 12 | # Folder config file 13 | Desktop.ini 14 | 15 | # Recycle Bin used on file shares 16 | $RECYCLE.BIN/ 17 | 18 | # Windows Installer files 19 | *.cab 20 | *.msi 21 | *.msm 22 | *.msp 23 | 24 | # Windows shortcuts 25 | *.lnk 26 | 27 | # ========================= 28 | # Operating System Files 29 | # ========================= 30 | 31 | # OSX 32 | # ========================= 33 | 34 | .DS_Store 35 | .AppleDouble 36 | .LSOverride 37 | 38 | # Thumbnails 39 | ._* 40 | 41 | # Files that might appear on external disk 42 | .Spotlight-V100 43 | .Trashes 44 | 45 | # Directories potentially created on remote AFP share 46 | .AppleDB 47 | .AppleDesktop 48 | Network Trash Folder 49 | Temporary Items 50 | .apdisk 51 | 52 | # Local directory exclusions 53 | /bin/ 54 | in.txt 55 | out.txt 56 | .project 57 | .classpath 58 | /.settings/ 59 | *.o 60 | *.exe 61 | .idea/ 62 | competitive-programming.iml 63 | out/ 64 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/cpp"] 2 | path = src/cpp 3 | url = https://github.com/jeffrey-xiao/ACM-Notebook.git -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Jeffrey Xiao 2 | 3 | Permission is hereby granted, free of charge, to any 4 | person obtaining a copy of this software and associated 5 | documentation files (the "Software"), to deal in the 6 | Software without restriction, including without 7 | limitation the rights to use, copy, modify, merge, 8 | publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software 10 | is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice 14 | shall be included in all copies or substantial portions 15 | of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 18 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 19 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 20 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT 21 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR 24 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 | DEALINGS IN THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /src/codebook/Template.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int main() { 21 | freopen("in.txt", "r", stdin); 22 | freopen("out.txt", "w", stdout); 23 | 24 | return 0; 25 | } 26 | -------------------------------------------------------------------------------- /src/codebook/algorithms/BinaryExponentiation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Computes the b^p % m and b^p. 3 | * 4 | * Time complexity: O(log p) where p is the power. 5 | */ 6 | 7 | package codebook.algorithms; 8 | 9 | public class BinaryExponentiation { 10 | public long modpow(long b, long p, long m) { 11 | if (p == 0) 12 | return 1; 13 | if (p == 1) 14 | return b; 15 | if (p % 2 == 0) 16 | return modpow(b * b % m, p / 2, m); 17 | return b * modpow(b * b % m, p / 2, m) % m; 18 | } 19 | 20 | public long pow(long b, long p) { 21 | if (p == 0) 22 | return 1; 23 | if (p == 1) 24 | return b; 25 | if (p % 2 == 0) 26 | return pow(b * b, p / 2); 27 | return b * pow(b * b, p / 2); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/codebook/algorithms/CoordinateCompress.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Given an array of length n, reassigns values to the array elements 3 | * such that the magnitude of each new value is no more than n, 4 | * while preserving the relative order of each element 5 | * as they existed in the original array. 6 | * 7 | * TIme complexity; O(N log N) 8 | * 9 | */ 10 | 11 | package codebook.algorithms; 12 | 13 | import java.util.Arrays; 14 | import java.util.HashMap; 15 | import java.util.TreeSet; 16 | 17 | public class CoordinateCompress { 18 | 19 | static void compress(int[] a, int lo, int hi) { 20 | TreeSet ts = new TreeSet(); 21 | for (int i = lo; i <= hi; i++) 22 | ts.add(a[i]); 23 | 24 | int cnt = 0; 25 | HashMap hm = new HashMap(); 26 | 27 | for (int val : ts) 28 | hm.put(val, cnt++); 29 | 30 | for (int i = lo; i <= hi; i++) 31 | a[i] = hm.get(a[i]); 32 | } 33 | 34 | public static void main(String[] args) { 35 | int[] a = new int[] {1, 2, 1, 5, 20, 20, 30, 20, 5, 1}; 36 | compress(a, 0, 9); 37 | System.out.println(Arrays.toString(a)); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/codebook/datastructures/MisofTree.cc: -------------------------------------------------------------------------------- 1 | /* 2 | * Kth Element Tree 3 | */ 4 | 5 | int tree[17][65536]; 6 | void insert(int x) { 7 | for (int i = 0; i < 17; i++) { 8 | tree[i][x]++; 9 | x /= 2; 10 | } 11 | } 12 | void erase(int x) { 13 | for (int i = 0; i < 17; i++) { 14 | tree[i][x]--; 15 | x /= 2; 16 | } 17 | } 18 | int kThElement(int k) { 19 | int a = 0, b = 16; 20 | while (b--) { 21 | a *= 2; 22 | if (tree[b][a] < k) 23 | k -= tree[b][a++]; 24 | } 25 | return a; 26 | } 27 | -------------------------------------------------------------------------------- /src/codebook/math/FactorCount.txt: -------------------------------------------------------------------------------- 1 | N = input() 2 | primes = array containing primes till 10^6 3 | ans = 1 4 | for all p in primes : 5 | if p*p*p > N: 6 | break 7 | count = 1 8 | while N divisible by p: 9 | N = N/p 10 | count = count + 1 11 | ans = ans * count 12 | if N is prime: 13 | ans = ans * 2 14 | else if N is square of a prime: 15 | ans = ans * 3 16 | else if N != 1: 17 | ans = ans * 4 18 | 19 | a -> factor count of N -------------------------------------------------------------------------------- /src/codebook/math/Sieve.java: -------------------------------------------------------------------------------- 1 | package codebook.math; 2 | 3 | public class Sieve { 4 | 5 | static int[] numOfDivisors(int n) { 6 | int[] ret = new int[n + 1]; 7 | for (int i = 1; i <= n; i++) 8 | for (int j = i; j <= n; j += i) 9 | ret[j]++; 10 | return ret; 11 | } 12 | 13 | static int[] sumOfDivisors(int n) { 14 | int[] ret = new int[n + 1]; 15 | for (int i = 1; i <= n; i++) 16 | for (int j = i; j <= n; j += i) 17 | ret[j] += i; 18 | return ret; 19 | } 20 | 21 | static int[] eulerTotient(int n) { 22 | int[] ret = new int[n + 1]; 23 | for (int i = 1; i <= n; i++) 24 | ret[i] = i; 25 | for (int i = 2; i <= n; i++) 26 | if (ret[i] == i) 27 | for (int j = i; j <= n; j += i) 28 | ret[j] -= ret[j] / i; 29 | return ret; 30 | } 31 | 32 | static int[] biggestPrimeDivisor(int n) { 33 | int[] ret = new int[n + 1]; 34 | for (int i = 1; i <= n; i++) 35 | if (ret[i] == i) 36 | for (int j = i; j <= n; j += i) 37 | ret[i] = i; 38 | return ret; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/codebook/math/Toolkit.java: -------------------------------------------------------------------------------- 1 | package codebook.math; 2 | 3 | public class Toolkit { 4 | 5 | static double roundToSignificantFigures(double num, int n) { 6 | if (num == 0) { 7 | return 0; 8 | } 9 | 10 | final double d = Math.ceil(Math.log10(num < 0 ? -num : num)); 11 | final int power = n - (int)d; 12 | 13 | final double magnitude = Math.pow(10, power); 14 | final long shifted = Math.round(num * magnitude); 15 | return shifted / magnitude; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_ACPC_2016_A.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int T; 6 | 7 | int bits(int n) { 8 | int ret = 0; 9 | while (n) { 10 | ret += n & 1; 11 | n /= 2; 12 | } 13 | return ret; 14 | } 15 | 16 | int main() { 17 | int T; 18 | cin >> T; 19 | for (int t = 0; t < T; t++) { 20 | string s; 21 | cin >> s; 22 | int ans = 0; 23 | int curr = 0; 24 | for (int i = 0; i < (int)s.size(); i++) { 25 | curr = curr * 10 + (s[i] - '0'); 26 | ans = max(ans, bits(curr)); 27 | } 28 | cout << ans << endl; 29 | } 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_ACPC_2016_B.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #define SIZE 10100 3 | typedef long long ll; 4 | using namespace std; 5 | ll dp[SIZE][4]; 6 | ll hp[SIZE]; 7 | ll ex[SIZE]; 8 | int main() { 9 | int T; 10 | scanf("%d", &T); 11 | for (int t = 0; t < T; t++) { 12 | ll N, D; 13 | for (int i = 0; i < SIZE; i++) 14 | dp[i][0] = dp[i][1] = dp[i][2] = dp[i][3] = 0; 15 | scanf("%lld%lld", &N, &D); 16 | for (int i = 1; i <= N; i++) 17 | scanf("%lld", &hp[i]); 18 | for (int i = 1; i <= N; i++) 19 | scanf("%lld", &ex[i]); 20 | for (int i = 1; i <= N; i++) { 21 | dp[i][0] = (hp[i] + D - 1) / D + min(dp[i - 1][2], dp[i - 1][3]); 22 | if (i) 23 | dp[i][1] = max(0LL, (hp[i] - ex[i - 1] + D - 1) / D) + min(dp[i - 1][0], dp[i - 1][1]); 24 | if (i < N) 25 | dp[i][2] = max(0LL, (hp[i] - ex[i + 1] + D - 1) / D) + min(dp[i - 1][2], dp[i - 1][3]); 26 | if ((i) && (i < N)) 27 | dp[i][3] = 28 | max(0LL, (hp[i] - ex[i - 1] - ex[i + 1] + D - 1) / D) + min(dp[i - 1][0], dp[i - 1][1]); 29 | } 30 | ll ans = min(dp[N][0], dp[N][1]); 31 | printf("%lld\n", ans); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_ACPC_2016_D.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #define EPS 1e-14 3 | using namespace std; 4 | 5 | bool isPrime(int N) { 6 | if (N <= 1) 7 | return false; 8 | for (int i = 2; i * i <= N; i++) 9 | if (N % i == 0) 10 | return false; 11 | return true; 12 | } 13 | 14 | double hypot(int x, int y, int lx, int ly) { 15 | int dx = x - lx; 16 | int dy = y - ly; 17 | return dx * dx + dy * dy; 18 | } 19 | 20 | int main() { 21 | int T; 22 | cin >> T; 23 | for (int i = 0; i < T; i++) { 24 | int N, D; 25 | cin >> N >> D; 26 | int best = 0; 27 | double dist = 0.; 28 | int lx = 0, ly = 0; 29 | bool done = false; 30 | for (int j = 1; j <= N; j++) { 31 | int x, y; 32 | cin >> x >> y; 33 | dist += sqrt(hypot(x, y, lx, ly)); 34 | lx = x; 35 | ly = y; 36 | if (dist - 1e-5 > D || done) { 37 | done = true; 38 | continue; 39 | } 40 | if (isPrime(j)) { 41 | best = j; 42 | } 43 | } 44 | cout << best << endl; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_ACPC_2016_E.cc: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() { 4 | int T; 5 | cin >> T; 6 | for (int t = 0; t < T; t++) { 7 | int r, c; 8 | cin >> r >> c; 9 | char g[r][c]; 10 | for (int i = 0; i < r; i++) 11 | for (int j = 0; j < c; j++) 12 | cin >> g[r - i - 1][c - j - 1]; 13 | cout << "Test " << (t + 1) << endl; 14 | for (int i = 0; i < r; i++, cout << endl) 15 | for (int j = 0; j < c; j++) 16 | cout << g[i][j]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_ACPC_2016_G.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #define SIZE 2010 3 | #define MOD (int)(1e9 + 7) 4 | using namespace std; 5 | typedef long long ll; 6 | string s; 7 | ll dp[SIZE][SIZE]; 8 | 9 | ll compute(int l, int r) { 10 | if (l > r) 11 | return 1; 12 | if (dp[l][r] != -1) 13 | return dp[l][r]; 14 | ll &ret = dp[l][r]; 15 | ret = 0; 16 | 17 | if (s[l] == s[r]) 18 | ret = (ret + compute(l + 1, r - 1)) % MOD; 19 | 20 | ret = (ret + compute(l + 1, r)) % MOD; 21 | ret = (ret + compute(l, r - 1)) % MOD; 22 | ret = (ret - compute(l + 1, r - 1) + MOD) % MOD; 23 | 24 | return ret; 25 | } 26 | 27 | int main() { 28 | int T; 29 | cin >> T; 30 | for (int t = 0; t < T; t++) { 31 | cin >> s; 32 | for (int i = 0; i < SIZE; i++) 33 | for (int j = 0; j < SIZE; j++) 34 | dp[i][j] = -1L; 35 | cout << (compute(0, (int)s.size() - 1) - 1 + MOD) % MOD << endl; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_ACPC_2016_H.cc: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() { 4 | int T; 5 | scanf("%d", &T); 6 | for (int i = 0; i < T; i++) { 7 | int v; 8 | scanf("%d", &v); 9 | printf("%d\n", (v + 399) / 400); 10 | } 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_ACPC_2016_I.cc: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | int main() { 5 | int T; 6 | scanf("%d", &T); 7 | for (int t = 0; t < T; t++) { 8 | int N, W; 9 | scanf("%d", &N); 10 | vector sz; 11 | for (int i = 0; i < N; i++) { 12 | scanf("%d", &W); 13 | int sum = 0; 14 | for (int j = 0; j < W; j++) { 15 | int val; 16 | scanf("%d", &val); 17 | sum += val; 18 | } 19 | sz.push_back(sum); 20 | } 21 | double totalTime = 0; 22 | int currTime = 0; 23 | sort(sz.begin(), sz.end()); 24 | for (int i = 0; i < (int)sz.size(); i++) { 25 | currTime += sz[i]; 26 | totalTime += currTime; 27 | } 28 | printf("%lf\n", totalTime / N); 29 | } 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_ACPC_2016_J.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int T; 6 | 7 | int bits(int n) { 8 | int ret = 0; 9 | while (n) { 10 | ret += n & 1; 11 | n /= 2; 12 | } 13 | return ret; 14 | } 15 | 16 | int main() { 17 | int T; 18 | cin >> T; 19 | for (int t = 0; t < T; t++) { 20 | string s; 21 | cin >> s; 22 | int ans = 0; 23 | int curr = 0; 24 | for (int i = 0; i < (int)s.size(); i++) { 25 | curr = curr * 10 + (s[i] - '0'); 26 | ans = max(ans, bits(curr)); 27 | } 28 | cout << ans << endl; 29 | } 30 | return 0; 31 | } 32 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_A_Careful_Reply.java: -------------------------------------------------------------------------------- 1 | package contest.acm; 2 | 3 | import java.util.Scanner; 4 | 5 | public class ACM_A_Careful_Reply { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int numOfStrings = scan.nextInt(); 10 | scan.nextLine(); 11 | for (; numOfStrings > 0; numOfStrings--) { 12 | int num = 1; 13 | String s = scan.nextLine(); 14 | for (int x = 0; x < s.length() - 1; x++) { 15 | if (s.charAt(x) == '<' && s.charAt(x + 1) == '3') 16 | num++; 17 | } 18 | for (int x = 0; x < num; x++) { 19 | if (x == num - 1) 20 | System.out.print("<3"); 21 | else 22 | System.out.print("<3 "); 23 | } 24 | System.out.println(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Greater_New_York_2015_A.cc: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | typedef long long ll; 4 | 5 | int main() { 6 | int T; 7 | scanf("%d", &T); 8 | 9 | for (int t = 0; t < T; t++) { 10 | ll K, N; 11 | scanf("%lld%lld", &K, &N); 12 | printf("%lld %lld %lld %lld\n", K, N * (N + 1) / 2, N * N, N * (N + 1)); 13 | } 14 | 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Greater_New_York_2015_B.py: -------------------------------------------------------------------------------- 1 | def choose(x, y): 2 | ret = 1 3 | for i in range(x - y + 1, x + 1): 4 | ret *= i 5 | for i in range(1, y + 1): 6 | ret //= i 7 | return ret 8 | 9 | 10 | T = int(input()) 11 | 12 | for _ in range(T): 13 | x, y = map(int, input().split()) 14 | ans = 0 15 | for i in range(y + 1): 16 | for j in range(i + 1): 17 | if 4 * i + 2 * j != y: 18 | continue 19 | ans += choose(i + j, j)**2 20 | print(x, ans) 21 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Greater_New_York_2015_D.py: -------------------------------------------------------------------------------- 1 | primes = [] 2 | for i in range(2, 10000): 3 | for p in primes: 4 | if i % p == 0: 5 | break 6 | else: 7 | primes.append(i) 8 | 9 | phi = [0 for i in range(10001)] 10 | for i in range(2, 10001): 11 | for p in primes: 12 | if i % p == 0: 13 | pwr = 0 14 | ic = i 15 | while ic % p == 0: 16 | pwr += 1 17 | ic //= p 18 | if ic == 1: 19 | phi[i] = i - p**(pwr - 1) 20 | else: 21 | phi[i] = (p**pwr - p**(pwr - 1)) * phi[ic] 22 | break 23 | 24 | pfx = [0] 25 | for i in phi: 26 | pfx.append(pfx[-1] + i) 27 | N = int(input()) 28 | 29 | for i in range(N): 30 | x, y = map(int, input().split()) 31 | print(x, pfx[y + 1] + 2) 32 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Greater_New_York_2015_F.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #define SIZE 500 3 | using namespace std; 4 | 5 | int green[SIZE], red[SIZE], cnt[SIZE], nCnt[SIZE]; 6 | 7 | int main() { 8 | int P; 9 | scanf("%d", &P); 10 | for (int t = 0; t < P; t++) { 11 | int K, N; 12 | scanf("%d%d", &K, &N); 13 | for (int i = 0; i < N; i++) 14 | scanf("%d", &red[i]); 15 | for (int i = 0; i < N; i++) 16 | scanf("%d", &green[i]); 17 | for (int i = 0; i < N; i++) 18 | cnt[i] = 1; 19 | for (int iter = 0; iter < 50000; iter++) { 20 | int a = rand() % 2; 21 | for (int i = 0; i < N; i++) 22 | nCnt[i] = 0; 23 | for (int i = 0; i < N; i++) { 24 | if (a) 25 | nCnt[red[i]] += cnt[i]; 26 | else 27 | nCnt[green[i]] += cnt[i]; 28 | } 29 | for (int i = 0; i < N; i++) 30 | cnt[i] = nCnt[i]; 31 | } 32 | int zeroes = 0; 33 | for (int i = 0; i < N; i++) 34 | if (cnt[i] == 0) 35 | zeroes++; 36 | if (zeroes == N - 1) 37 | printf("%d YES\n", K); 38 | else 39 | printf("%d NO\n", K); 40 | } 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Greater_New_York_2015_G.py: -------------------------------------------------------------------------------- 1 | N = int(input()) 2 | 3 | RES = {} 4 | 5 | 6 | def result(n, m, k): 7 | if (n, m, k) in RES: 8 | return RES[n, m, k] 9 | else: 10 | RES[n, m, k] = _result(n, m, k) 11 | return RES[n, m, k] 12 | 13 | 14 | def _result(n, m, k): 15 | if n == 0: 16 | return 1 17 | else: 18 | s = 0 19 | for l in range(1, n + 1): 20 | if (l - m) % k == 0: 21 | continue 22 | s += result(n - l, m, k) 23 | return s 24 | 25 | 26 | for i in range(N): 27 | K, n, m, k = map(int, input().split()) 28 | print(K, result(n, m, k)) 29 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Greater_New_York_2015_K.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int main() { 6 | int N; 7 | scanf("%d", &N); 8 | 9 | printf("%s\n", N % 2 ? "Alice" : "Bob"); 10 | } 11 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Greater_New_York_2016_B.py: -------------------------------------------------------------------------------- 1 | def choose(x, y): 2 | ret = 1 3 | for i in range(x - y + 1, x + 1): 4 | ret *= i 5 | for i in range(1, y + 1): 6 | ret //= i 7 | return ret 8 | 9 | 10 | T = int(input()) 11 | 12 | for _ in range(T): 13 | x, y = map(int, input().split()) 14 | ans = 0 15 | for i in range(y + 1): 16 | for j in range(i + 1): 17 | if 4 * i + 2 * j != y: 18 | continue 19 | ans += choose(i + j, j)**2 20 | print(x, ans) 21 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Hong_Kong_2016_A.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #define MOD (int)(1e9 + 7) 3 | 4 | using namespace std; 5 | 6 | typedef long long ll; 7 | 8 | int main() { 9 | string s; 10 | cin >> s; 11 | ll cnt = 0; 12 | ll ways = 1; 13 | ll ans = 0; 14 | for (int i = s.size() - 1; i >= 0; i--) { 15 | if (s[i] == '1') { 16 | ans = (ans + (int)(s.size() - i - 1) * ways - cnt + MOD) % MOD; 17 | cnt = (cnt + ways) % MOD; 18 | } else if (s[i] == '?') { 19 | ans = (2 * ans + (int)(s.size() - i - 1) * ways - cnt + MOD) % MOD; 20 | cnt = (cnt * 2 + ways) % MOD; 21 | ways = (ways * 2) % MOD; 22 | } 23 | } 24 | printf("%lld\n", ans); 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Hong_Kong_2016_E.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #define SIZE 100000 3 | using namespace std; 4 | 5 | int N; 6 | long long cost[SIZE]; 7 | 8 | int main() { 9 | scanf("%d", &N); 10 | 11 | for (int i = 0; i < N - 1; i++) 12 | scanf("%lld", &cost[i]); 13 | 14 | long long ans = 0, currTime = 0, minCost = 1 << 30; 15 | for (int i = 0; i < N; i++) { 16 | int time; 17 | scanf("%d", &time); 18 | if (i) { 19 | ans += minCost * max(0LL, (time - currTime + 1) / 2 * 2); 20 | currTime += max(0LL, (time - currTime + 1) / 2 * 2); 21 | } 22 | minCost = min(minCost, cost[i]); 23 | ans += cost[i]; 24 | currTime++; 25 | } 26 | printf("%lld\n", ans); 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Interleaving_Leaves.java: -------------------------------------------------------------------------------- 1 | package contest.acm; 2 | 3 | import java.util.Scanner; 4 | 5 | public class ACM_Interleaving_Leaves { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int z = scan.nextInt(); z > 0; z--) { 10 | int length = scan.nextInt(); 11 | scan.nextLine(); 12 | String s1 = scan.nextLine(); 13 | String s2 = scan.nextLine(); 14 | String newS = ""; 15 | for (int x = length - 1; x >= 0; x--) { 16 | newS += s2.charAt(x); 17 | newS += s1.charAt(x); 18 | } 19 | System.out.println(newS); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/contest/acm/ACM_Max_Flow.java: -------------------------------------------------------------------------------- 1 | package contest.acm; 2 | 3 | import java.util.Scanner; 4 | 5 | public class ACM_Max_Flow { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int x = scan.nextInt(); x > 0; x--) { 10 | int max = Integer.MIN_VALUE; 11 | for (int y = scan.nextInt(); y > 0; y--) { 12 | int a = scan.nextInt(); 13 | max = Math.max(max, a); 14 | } 15 | System.out.println(max); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_1996_A.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_1996_A { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int[][] nums = new int[scan.nextInt()][2]; 10 | for (int x = 0; x < nums.length; x++) { 11 | int sum = 1; 12 | nums[x][1] = scan.nextInt(); 13 | for (int y = 2; y <= Math.sqrt(nums[x][1]); y++) { 14 | if (nums[x][1] % y == 0 && nums[x][1] == y * y) 15 | sum += y; 16 | else if (nums[x][1] % y == 0) { 17 | sum += y + nums[x][1] / y; 18 | } 19 | } 20 | nums[x][0] = sum; 21 | } 22 | String s = ""; 23 | for (int[] x : nums) { 24 | if (x[0] == x[1]) 25 | s = "a perfect"; 26 | else if (x[0] > x[1]) 27 | s = "an abundant"; 28 | else 29 | s = "a deficient"; 30 | System.out.printf("%d is %s number.%n", x[1], s); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_1996_C.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_1996_C { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int[][] cases = new int[scan.nextInt()][2]; 10 | for (int x = 0; x < cases.length; x++) { 11 | cases[x][0] = scan.nextInt(); 12 | cases[x][1] = scan.nextInt(); 13 | } 14 | for (int[] x : cases) { 15 | System.out.println("The bit patterns are"); 16 | printPatterns(x[0], x[1], ""); 17 | System.out.println(); 18 | } 19 | } 20 | 21 | private static void printPatterns(int i, int j, String s) { 22 | if (i == 0 && j == 0) { 23 | System.out.println(s); 24 | return; 25 | } else if (i == 0 && j != 0 || j < 0) 26 | return; 27 | for (int x = 1; x >= 0; x--) { 28 | if (x == 1) 29 | printPatterns(i - 1, j - 1, s + "1"); 30 | else 31 | printPatterns(i - 1, j, s + "0"); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_1996_Stage_2_Train_Swapping.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_1996_Stage_2_Train_Swapping { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int t = scan.nextInt(); t > 0; t--) { 10 | int num = scan.nextInt(); 11 | int[] nums = new int[num]; 12 | for (int x = 0; x < num; x++) 13 | nums[x] = scan.nextInt(); 14 | int passes = 0; 15 | for (int x = 0; x < nums.length; x++) { 16 | for (int y = x + 1; y < nums.length; y++) { 17 | if (nums[x] > nums[y]) { 18 | int temp = nums[y]; 19 | nums[y] = nums[x]; 20 | nums[x] = temp; 21 | passes++; 22 | } 23 | } 24 | } 25 | System.out.printf("Optimal train swapping takes %d swap(s).%n", passes); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_1997_C.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_1997_C { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int x = scan.nextInt(); x > 0; x--, System.out.println()) { 10 | int a = scan.nextInt(); 11 | int b = 0; 12 | int c = 0; 13 | int round = 0; 14 | while (b != 1 || a != 1) { 15 | System.out.printf("Round %d: %d undefeated, %d one-loss, %d eliminated%n", round, a, b, c); 16 | c += b / 2; 17 | b = (int)Math.ceil(b / 2.0); 18 | b += a / 2; 19 | a = (int)Math.ceil(a / 2.0); 20 | round++; 21 | } 22 | System.out.printf("Round %d: %d undefeated, %d one-loss, %d eliminated%n", round, a, b, c); 23 | a -= 1; 24 | b += 1; 25 | round++; 26 | System.out.printf("Round %d: %d undefeated, %d one-loss, %d eliminated%n", round, a, b, c); 27 | b -= 1; 28 | c += 1; 29 | round++; 30 | System.out.printf("Round %d: %d undefeated, %d one-loss, %d eliminated%n", round, a, b, c); 31 | System.out.println("There are " + (round) + " rounds."); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_1997_D.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Scanner; 5 | 6 | public class CCC_1997_D { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int t = scan.nextInt(); 11 | scan.nextLine(); 12 | for (; t > 0; t--) { 13 | ArrayList input = new ArrayList(); 14 | String in = scan.nextLine(); 15 | while (!in.isEmpty()) { 16 | input.add(in.split(" ")); 17 | in = scan.nextLine(); 18 | } 19 | ArrayList dictionary = new ArrayList(); 20 | for (int x = 0; x < input.size(); x++) { 21 | for (int y = 0; y < input.get(x).length; y++) { 22 | String s = input.get(x)[y]; 23 | if (dictionary.indexOf(s) == -1) { 24 | dictionary.add(s); 25 | System.out.print(s + " "); 26 | } else { 27 | System.out.print(dictionary.indexOf(s) + 1 + " "); 28 | } 29 | } 30 | System.out.println(); 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2000_J4_S2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Scanner; 5 | 6 | public class CCC_2000_J4_S2 { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | ArrayList a = new ArrayList(); 11 | for (int x = scan.nextInt(); x > 0; x--) 12 | a.add((float)scan.nextInt()); 13 | int x = scan.nextInt(); 14 | while (x != 77) { 15 | if (x == 99) { 16 | int index = scan.nextInt() - 1; 17 | int percent = scan.nextInt(); 18 | a.add(index + 1, (float)(a.get(index) * ((100.0 - percent)) / 100.0)); 19 | a.set(index, (float)(a.get(index) * (percent / 100.0))); 20 | } else { 21 | int index = scan.nextInt() - 1; 22 | a.set(index, a.get(index) + a.get(index + 1)); 23 | a.remove(index + 1); 24 | } 25 | x = scan.nextInt(); 26 | } 27 | for (x = 0; x < a.size(); x++) { 28 | System.out.print(Math.round(a.get(x)) + " "); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2002_J4_S2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2002_J4_S2 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int a = scan.nextInt(); 10 | int b = scan.nextInt(); 11 | int whole = a / b; 12 | a -= whole * b; 13 | if (a != 0) { 14 | int gcf = gcf(b, a); 15 | a /= gcf; 16 | b /= gcf; 17 | } 18 | if (a != 0 && whole != 0) 19 | System.out.printf("%d %d/%d", whole, a, b); 20 | else if (whole == 0) 21 | System.out.printf("%d/%d", a, b); 22 | else 23 | System.out.println(whole); 24 | } 25 | 26 | private static int gcf(int a, int b) { 27 | if (b == 0) 28 | return a; 29 | if (b == 1) 30 | return 1; 31 | return gcf(b, a % b); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2003_J3_S1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2003_J3_S1 { 6 | public static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int square = 1; 10 | int dice = scan.nextInt(); 11 | while (dice != 0) { 12 | if (dice + square <= 100) { 13 | square += dice; 14 | square = checkMove(square); 15 | } 16 | System.out.println("You are now on square " + square); 17 | if (square == 100) 18 | break; 19 | dice = scan.nextInt(); 20 | } 21 | System.out.println(square == 100 ? "You Win!" : "You Quit!"); 22 | } 23 | 24 | public static int checkMove(int square) { 25 | switch (square) { 26 | case 9: 27 | square = 34; 28 | break; 29 | case 54: 30 | square = 19; 31 | break; 32 | case 40: 33 | square = 64; 34 | break; 35 | case 90: 36 | square = 48; 37 | break; 38 | case 67: 39 | square = 86; 40 | break; 41 | case 99: 42 | square = 77; 43 | break; 44 | } 45 | return square; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2003_S4.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class CCC_2003_S4 { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int length = scan.nextInt(); 11 | scan.nextLine(); 12 | for (; length > 0; length--) { 13 | String s = scan.nextLine(); 14 | // get suffix array 15 | String[] suffix = new String[s.length()]; 16 | for (int x = 0; x < suffix.length; x++) { 17 | suffix[x] = s; 18 | s = s.substring(1, s.length()); 19 | } 20 | Arrays.sort(suffix); 21 | int count = suffix[0].length(); 22 | for (int x = 0; x < suffix.length - 1; x++) { 23 | count += suffix[x + 1].length() - LCP(suffix[x], suffix[x + 1]); 24 | ; 25 | } 26 | System.out.println(count + 1); 27 | } 28 | } 29 | 30 | private static int LCP(String string, String string2) { 31 | int counter = 0; 32 | for (int x = 0; x < Math.min(string.length(), string2.length()); x++) { 33 | if (string.charAt(x) != string2.charAt(x)) 34 | break; 35 | counter++; 36 | } 37 | return counter; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2003_Stage_2_Longest_Substring.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define MAX 65536 4 | 5 | #define bb(n) (buf[(n) % MAX]) 6 | #define cc(n) (cbuf[(n) % MAX]) 7 | 8 | int buf[MAX]; 9 | int cbuf[MAX]; 10 | int b, i, j, k, besti = -1, bestj; 11 | 12 | int cnt[MAX]; 13 | 14 | int main() { 15 | for (i = 0; 1 == scanf("%d", &bb(i)) && bb(i); i++) { 16 | cnt[bb(i)]++; 17 | while (cnt[bb(i)] > 1) 18 | cnt[bb(j++)]--; 19 | if (i - j > besti - bestj) { 20 | if (j > besti) { 21 | for (k = j; k <= i; k++) 22 | cc(k) = bb(k); 23 | } else { 24 | for (k = besti + 1; k <= i; k++) 25 | cc(k) = bb(k); 26 | } 27 | besti = i; 28 | bestj = j; 29 | } 30 | } 31 | for (k = bestj; k <= besti; k++) { 32 | printf("%d\n", cc(k)); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2004_J1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.StringTokenizer; 7 | 8 | public class CCC_2004_J1 { 9 | 10 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | static StringTokenizer st; 12 | 13 | public static void main(String[] args) throws IOException { 14 | System.out.printf("The largest square has side length %d.", (int)(Math.sqrt(readInt()))); 15 | } 16 | 17 | static String next() throws IOException { 18 | while (st == null || !st.hasMoreTokens()) 19 | st = new StringTokenizer(br.readLine().trim()); 20 | return st.nextToken(); 21 | } 22 | 23 | static long readLong() throws IOException { 24 | return Long.parseLong(next()); 25 | } 26 | 27 | static int readInt() throws IOException { 28 | return Integer.parseInt(next()); 29 | } 30 | 31 | static double readDouble() throws IOException { 32 | return Double.parseDouble(next()); 33 | } 34 | 35 | static String readLine() throws IOException { 36 | return br.readLine().trim(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2004_J2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2004_J2 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int start = scan.nextInt(); 10 | int end = scan.nextInt(); 11 | for (int x = start; x <= end; x++) { 12 | if ((start - x) % 60 == 0) 13 | System.out.println("All positions change in year " + x); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2004_J4.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Scanner; 6 | 7 | public class CCC_2004_J4 { 8 | public static String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 9 | public static Scanner scan = new Scanner(System.in); 10 | 11 | public static void main(String[] args) { 12 | char[] encodeKey = scan.nextLine().toCharArray(); 13 | char[] temp = scan.nextLine().toCharArray(); 14 | List preEncode = new ArrayList(); 15 | List postEncode = new ArrayList(); 16 | for (char a : temp) { 17 | if (alphabet.indexOf(a) != -1) { 18 | preEncode.add(a); 19 | } 20 | } 21 | int counter = 0; 22 | for (int x = 0; x < preEncode.size(); x++) { 23 | int indexPreEncode = alphabet.indexOf(preEncode.get(x)); 24 | int moveLength = alphabet.indexOf(encodeKey[counter]); 25 | 26 | postEncode.add((alphabet.charAt((indexPreEncode + moveLength) % 26))); 27 | counter = (counter + 1) % encodeKey.length; 28 | } 29 | for (char a : postEncode) { 30 | System.out.print(a); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2005_J3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Scanner; 5 | 6 | public class CCC_2005_J3 { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | ArrayList locations = new ArrayList(); 11 | String d = ""; 12 | String loc = ""; 13 | while (!loc.equals("SCHOOL")) { 14 | d = scan.next(); 15 | loc = scan.next(); 16 | locations.add(new String[] {d, loc}); 17 | } 18 | for (int x = locations.size() - 1; x >= 0; x--) 19 | if (!locations.get(x)[1].equals("SCHOOL")) { 20 | System.out.printf("Turn %s %s%n", locations.get(x + 1)[0].equals("R") ? "LEFT" : "RIGHT", "onto " + locations.get(x)[1] + " street."); 21 | } 22 | System.out.println("Turn " + (locations.get(0)[0].equals("R") ? "LEFT" : "RIGHT") + " into your HOME."); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2006_Stage_2_CN_Tower.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class CCC_2006_Stage_2_CN_Tower { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int n = scan.nextInt(); 11 | scan.nextLine(); 12 | double[] locations = new double[n]; 13 | for (n -= 1; n >= 0; n--) 14 | locations[n] = Double.parseDouble(scan.nextLine().split(" ")[1]); 15 | Arrays.sort(locations); 16 | double biggest = locations[0] + 360.0 - locations[locations.length - 1]; 17 | for (int x = 0; x < locations.length - 1; x++) 18 | biggest = Math.max(biggest, locations[x + 1] - locations[x]); 19 | double answer = (360.0d - biggest) / 360.0d * 72.0d * 60.0d - (int)((360.0d - biggest) / 360.0d * 72.0d * 60.0d) < 0.0000001d ? (int)((360.0d - biggest) / 360.0d * 72.0d * 60.0d) : Math.ceil(Math.ceil((360.0d - biggest) / 360.0d * 72.0d * 60.0d)); 20 | System.out.println((int)answer); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2007_J3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.Collections; 6 | import java.util.List; 7 | import java.util.Scanner; 8 | 9 | public class CCC_2007_J3 { 10 | public static Scanner scan = new Scanner(System.in); 11 | public static List briefcases = new ArrayList(Arrays.asList(100, 500, 1000, 5000, 10000, 25000, 50000, 100000, 500000, 1000000)); 12 | 13 | public static void main(String[] args) { 14 | int openedNumCases = scan.nextInt(); 15 | ArrayList openedCases = new ArrayList(); 16 | for (int x = 0; x < openedNumCases; x++) { 17 | openedCases.add(scan.nextInt()); 18 | } 19 | Collections.sort(openedCases); 20 | for (int x = openedCases.size() - 1; x >= 0; x--) { 21 | briefcases.remove(openedCases.get(x) - 1); 22 | } 23 | int average = 0; 24 | for (int x = 0; x < briefcases.size(); x++) { 25 | average += briefcases.get(x); 26 | } 27 | average /= briefcases.size(); 28 | System.out.println(scan.nextInt() > average ? "deal" : "no deal"); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2007_J4.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class CCC_2007_J4 { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | char[] s1 = scan.nextLine().replaceAll("\\s+", "").toCharArray(); 11 | char[] s2 = scan.nextLine().replaceAll("\\s+", "").toCharArray(); 12 | Arrays.sort(s1); 13 | Arrays.sort(s2); 14 | for (int x = 0; x < s1.length; x++) { 15 | if (s1[x] != s2[x]) { 16 | System.out.println("Is not an anagram."); 17 | return; 18 | } 19 | } 20 | System.out.println("Is an anagram."); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2007_J5.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.Collections; 6 | import java.util.List; 7 | import java.util.Scanner; 8 | 9 | public class CCC_2007_J5 { 10 | static Scanner scan = new Scanner(System.in); 11 | 12 | public static void main(String[] args) { 13 | int a = scan.nextInt(); 14 | int b = scan.nextInt(); 15 | int length = scan.nextInt(); 16 | List motels = new ArrayList(Arrays.asList(new Integer[] {0, 990, 1010, 1970, 2030, 2940, 3060, 3930, 4060, 4970, 5030, 5990, 6010, 7000})); 17 | int[] dp = new int[motels.size() + length]; 18 | for (int x = 0; x < length; x++) 19 | motels.add(scan.nextInt()); 20 | dp[0] = 1; 21 | Collections.sort(motels); 22 | for (int x = 0; x < motels.size(); x++) 23 | for (int y = x + 1; y < motels.size() && b >= motels.get(y) - motels.get(x); y++) 24 | if (a <= motels.get(y) - motels.get(x)) 25 | dp[y] += dp[x]; 26 | System.out.println(dp[dp.length - 1]); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2007_S3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2007_S3 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int n = scan.nextInt(); 10 | int[] friends = new int[9999]; 11 | for (int x = 0; x < n; x++) { 12 | friends[scan.nextInt() - 1] = scan.nextInt() - 1; 13 | } 14 | int n1 = scan.nextInt() - 1; 15 | int n2 = scan.nextInt() - 1; 16 | while (n1 != -1) { 17 | boolean[] visited = new boolean[9999]; 18 | int distance = -1; 19 | while (!visited[n1] && n1 != n2) { 20 | visited[n1] = true; 21 | distance++; 22 | n1 = friends[n1]; 23 | } 24 | System.out.println(n1 == n2 ? "Yes " + distance : "No"); 25 | n1 = scan.nextInt() - 1; 26 | n2 = scan.nextInt() - 1; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2007_S4.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.Collections; 6 | import java.util.Comparator; 7 | import java.util.List; 8 | import java.util.Scanner; 9 | 10 | public class CCC_2007_S4 { 11 | static Scanner scan = new Scanner(System.in); 12 | 13 | public static void main(String[] args) { 14 | int destination = scan.nextInt(); 15 | ArrayList> slides = new ArrayList>(); 16 | int a; 17 | while ((a = scan.nextInt()) != 0) 18 | slides.add(Arrays.asList(new Integer[] {a, scan.nextInt()})); 19 | scan.nextInt(); 20 | Collections.sort(slides, new Comparator() { 21 | @Override 22 | public int compare(Object arg0, Object arg1) { 23 | return ((List)arg0).get(1) < ((List)arg1).get(1) ? 1 : -1; 24 | } 25 | }); 26 | int[] dp = new int[destination]; 27 | dp[destination - 1] = 1; 28 | for (List x : slides) { 29 | dp[x.get(0) - 1] += dp[x.get(1) - 1]; 30 | } 31 | System.out.println(dp[0]); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2007_S5.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2007_S5 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int x = scan.nextInt(); x > 0; x--) { 10 | int numOfBowlingPins = scan.nextInt(); 11 | int numOfBalls = scan.nextInt(); 12 | int width = scan.nextInt(); 13 | int[] pins = new int[numOfBowlingPins + 1]; 14 | for (int y = 1; y < pins.length; y++) 15 | pins[y] = scan.nextInt(); 16 | int[][] dp = new int[2][numOfBowlingPins + 1]; 17 | for (int z = 1; z < numOfBalls + 1; z++) { 18 | int curr = 0; 19 | for (int y = 1; y < dp[z % 2].length; y++) { 20 | if (y < width + 1) { 21 | curr += pins[y]; 22 | dp[z % 2][y] = curr; 23 | continue; 24 | } else 25 | curr = curr + pins[y] - pins[y - width]; 26 | dp[z % 2][y] = Math.max(curr + dp[(z - 1) % 2][y - width], dp[z % 2][y - 1]); 27 | } 28 | } 29 | System.out.println(dp[numOfBalls % 2][numOfBowlingPins]); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2007_Stage_2_Bowling_For_Numbers.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int dp[501][10101]; 6 | int sum[10101]; 7 | int pins[10101]; 8 | int n, w, K, t; 9 | 10 | int compute(int k, int x) { 11 | if (k <= 0 || x < 0) 12 | return 0; 13 | int &ret = dp[k][x]; 14 | if (ret != -1) 15 | return ret; 16 | int usePos = max(0, x - w); 17 | int useScore = sum[x] - sum[usePos]; 18 | ret = max(compute(k, x - 1), compute(k - 1, usePos) + useScore); 19 | if (k >= 2) { 20 | int scoreSum = 0; 21 | for (int i = usePos; i > usePos - w + 1 && i > 0; i--) { 22 | scoreSum += pins[i]; 23 | ret = max(ret, compute(k - 2, i - 1) + useScore + scoreSum); 24 | } 25 | } 26 | return ret; 27 | } 28 | 29 | int main() { 30 | scanf("%d", &t); 31 | for (int qq = 0; qq < t; qq++) { 32 | memset(dp, -1, sizeof dp); 33 | memset(pins, 0, sizeof pins); 34 | memset(sum, 0, sizeof sum); 35 | scanf("%d%d%d", &n, &K, &w); 36 | for (int i = 1; i <= n; i++) 37 | scanf("%d", &pins[i]); 38 | for (int i = 1; i <= n + w; i++) 39 | sum[i] = sum[i - 1] + pins[i]; 40 | printf("%d\n", compute(K, n + w)); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2008_J1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2008_J1 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | double weight = scan.nextDouble(); 10 | double height = scan.nextDouble(); 11 | double bmi = weight / height / height; 12 | if (bmi > 25) 13 | System.out.println("Overweight"); 14 | else if (bmi <= 25 && bmi > 18.5) 15 | System.out.println("Normal weight"); 16 | else 17 | System.out.println("Underweight"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2008_S1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2008_S1 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | String s = ""; 10 | int min = 201; 11 | String city = ""; 12 | do { 13 | city = scan.next(); 14 | int temp = scan.nextInt(); 15 | if (temp < min) { 16 | s = city; 17 | min = temp; 18 | } 19 | 20 | } while (!city.equals("Waterloo")); 21 | System.out.println(s); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2009_J1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.StringTokenizer; 7 | 8 | public class CCC_2009_J1 { 9 | 10 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | static StringTokenizer st; 12 | 13 | public static void main(String[] args) throws IOException { 14 | System.out.println("The 1-3-sum is " + (91 + readInt() + readInt() * 3 + readInt())); 15 | } 16 | 17 | static String next() throws IOException { 18 | while (st == null || !st.hasMoreTokens()) 19 | st = new StringTokenizer(br.readLine().trim()); 20 | return st.nextToken(); 21 | } 22 | 23 | static long readLong() throws IOException { 24 | return Long.parseLong(next()); 25 | } 26 | 27 | static int readInt() throws IOException { 28 | return Integer.parseInt(next()); 29 | } 30 | 31 | static double readDouble() throws IOException { 32 | return Double.parseDouble(next()); 33 | } 34 | 35 | static String readLine() throws IOException { 36 | return br.readLine().trim(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2009_S1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2009_S1 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int a = scan.nextInt(); 10 | int b = scan.nextInt(); 11 | int sixth = (int)Math.pow(b + 1, 1.0 / 6.0) - (int)Math.pow(a - 1, 1.0 / 6.0); 12 | System.out.println(sixth); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2010_J1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2010_J1 { 6 | public static void main(String[] args) { 7 | Scanner scan = new Scanner(System.in); 8 | System.out.println(3 - Math.abs(5 - scan.nextInt()) / 2); 9 | scan.close(); 10 | } 11 | } -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2010_J4.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2010_J4 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int input = scan.nextInt(); 10 | while (input != 0) { 11 | int[] diff = new int[input - 1]; 12 | 13 | int start = scan.nextInt(); 14 | for (int x = 0; x < input - 1; x++) { 15 | int next = scan.nextInt(); 16 | diff[x] = next - start; 17 | start = next; 18 | } 19 | if (diff.length == 0) { 20 | System.out.println(0); 21 | input = scan.nextInt(); 22 | continue; 23 | } 24 | // assume cycle length is 1 and continue; 25 | int x = 1; 26 | main: 27 | for (; x < diff.length; x++) { 28 | for (int y = x; y < diff.length; y++) { 29 | if (diff[y - x] != diff[y]) 30 | continue main; 31 | } 32 | break; 33 | } 34 | System.out.println(x); 35 | input = scan.nextInt(); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2011_J2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | class CCC_2011_J2 { 6 | 7 | public static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int humidityFactor = scan.nextInt(); 11 | int time = scan.nextInt(); 12 | boolean inTime = false; 13 | int timeToLand = 0; 14 | for (int x = 1; x <= time; x++) { 15 | int altitude = (int)((humidityFactor * Math.pow(x, 3)) + (2 * Math.pow(x, 2)) + x - (6 * Math.pow(x, 4))); 16 | if (altitude <= 0) { 17 | inTime = true; 18 | timeToLand = x; 19 | break; 20 | } 21 | } 22 | System.out.println(inTime ? "The balloon first touches ground at hour:\n" + timeToLand : "The balloon does not touch ground in the given time."); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2011_J3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2011_J3 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int x1 = scan.nextInt(); 10 | int x2 = scan.nextInt(); 11 | int s = 2; 12 | while (x1 >= x2) { 13 | int temp = x1 - x2; 14 | x1 = x2; 15 | x2 = temp; 16 | s++; 17 | } 18 | System.out.println(s); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2011_J5.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | class CCC_2011_J5 { 6 | public static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int number = scan.nextInt(); 10 | int[] friends = new int[number]; 11 | for (int x = 0; x < number - 1; x++) 12 | friends[x] = scan.nextInt(); 13 | System.out.println(getWays(friends, number, number)); 14 | } 15 | 16 | public static int getWays(int[] friends, int number, int t) { 17 | int result = 1; 18 | for (int x = 0; x < number; x++) { 19 | if (friends[x] == t) 20 | result *= (1 + getWays(friends, number, x + 1)); 21 | } 22 | return result; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2011_S2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2011_S2 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int num = scan.nextInt(); 10 | char[] response = new char[num]; 11 | for (int x = 0; x < num; x++) 12 | response[x] = scan.next().charAt(0); 13 | int counter = 0; 14 | for (int x = 0; x < num; x++) 15 | if (scan.next().charAt(0) == response[x]) 16 | counter++; 17 | System.out.println(counter); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2011_S3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2011_S3 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int x = scan.nextInt(); x > 0; x--) { 10 | System.out.println(isCrystal(scan.nextInt(), scan.nextInt(), scan.nextInt()) ? "crystal" : "empty"); 11 | } 12 | } 13 | 14 | public static boolean isCrystal(int m, int x, int y) { 15 | if (m == 0) 16 | return false; 17 | int newX = (int)Math.floor(x / (Math.pow(5, m) / 5)); 18 | int newY = (int)Math.floor(y / (Math.pow(5, m) / 5)); 19 | if (newX > 0 && newX < 4 && newY == 0) { 20 | return true; 21 | } else if (newX == 2 && newY == 1) { 22 | return true; 23 | } else if (((newX == 1 || newX == 3) && newY == 1) || (newY == 2 && newX == 2)) 24 | return isCrystal(m - 1, (int)(x % (Math.pow(5, m) / 5)), (int)(y % (Math.pow(5, m) / 5))); 25 | return false; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2012_J1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | class CCC_2012_J1 { 6 | public static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int speedLimit = scan.nextInt(); 10 | int recordedSpeed = scan.nextInt(); 11 | int fine = 0; 12 | if (speedLimit - recordedSpeed >= 0) { 13 | System.out.println("Congratulations, you are within the speed limit!"); 14 | } else if (Math.abs(speedLimit - recordedSpeed) > 30) { 15 | fine = 500; 16 | } else if (Math.abs(speedLimit - recordedSpeed) > 20) { 17 | fine = 270; 18 | } else { 19 | fine = 100; 20 | } 21 | if (fine > 0) 22 | System.out.format("You are speeding and your fine is $%d.", fine); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2012_J2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | class CCC_2012_J2 { 6 | public static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | String reading = ""; 10 | int[] depthsRecorded = new int[4]; 11 | for (int x = 0; x < 4; x++) { 12 | depthsRecorded[x] = scan.nextInt(); 13 | if (x == 0) 14 | continue; 15 | 16 | if (depthsRecorded[x] > depthsRecorded[x - 1] && (reading.equals("Fish Rising") || reading.equals(""))) { 17 | reading = "Fish Rising"; 18 | 19 | } else if (depthsRecorded[x] < depthsRecorded[x - 1] && (reading.equals("Fish Diving") || reading.equals(""))) { 20 | reading = "Fish Diving"; 21 | } else if (depthsRecorded[x] == depthsRecorded[x - 1] && (reading.equals("Fish At Constant Depth") || reading.equals(""))) { 22 | reading = "Fish At Constant Depth"; 23 | } else { 24 | reading = "No Fish"; 25 | } 26 | } 27 | System.out.println(reading); 28 | } 29 | } -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2012_J3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | class CCC_2012_J3 { 6 | public static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | char[][] board = {{'*', 'x', '*'}, {' ', 'x', 'x'}, {'*', ' ', '*'}}; 10 | int scaling = scan.nextInt(); 11 | char[][] resizedBoard = new char[3 * scaling][3 * scaling]; 12 | for (int x = 0; x < 3 * scaling; x++) { 13 | for (int y = 0; y < 3; y++) { 14 | for (int z = 0; z < scaling; z++) { 15 | resizedBoard[x][(y * scaling) + z] = board[(int)Math.floor(x / scaling)][y]; 16 | } 17 | } 18 | } 19 | for (int i = 0; i < 3 * scaling; i++) { 20 | for (int j = 0; j < 3 * scaling; j++) { 21 | System.out.print(resizedBoard[i][j]); 22 | } 23 | System.out.println(); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2012_J4.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | class CCC_2012_J4 { 6 | 7 | public static Scanner scan = new Scanner(System.in); 8 | public static char[] alphabet = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; 9 | 10 | public static void main(String[] args) { 11 | int parameter = scan.nextInt(); 12 | String rawCode = scan.next(); 13 | char[] code = rawCode.toCharArray(); 14 | int tempCharPos = 0; 15 | char[] newCode = new char[code.length]; 16 | for (int x = 0; x < code.length; x++) { 17 | for (int y = 0; y < alphabet.length; y++) { 18 | if (code[x] == alphabet[y]) { 19 | tempCharPos = y; 20 | } 21 | } 22 | tempCharPos -= (3 * (x + 1) + parameter); 23 | if (tempCharPos < 0) 24 | tempCharPos += 26; 25 | newCode[x] = alphabet[tempCharPos]; 26 | } 27 | for (int z = 0; z < newCode.length; z++) { 28 | System.out.print(newCode[z]); 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2012_S1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.StringTokenizer; 7 | 8 | public class CCC_2012_S1 { 9 | 10 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | static StringTokenizer st; 12 | 13 | public static void main(String[] args) throws IOException { 14 | int n = readInt() - 1; 15 | System.out.println((n * (n - 1) * (n - 2)) / 6); 16 | } 17 | 18 | static String next() throws IOException { 19 | while (st == null || !st.hasMoreTokens()) 20 | st = new StringTokenizer(br.readLine().trim()); 21 | return st.nextToken(); 22 | } 23 | 24 | static long readLong() throws IOException { 25 | return Long.parseLong(next()); 26 | } 27 | 28 | static int readInt() throws IOException { 29 | return Integer.parseInt(next()); 30 | } 31 | 32 | static double readDouble() throws IOException { 33 | return Double.parseDouble(next()); 34 | } 35 | 36 | static String readLine() throws IOException { 37 | return br.readLine().trim(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2012_S5.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2012_S5 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int[][] lab = new int[scan.nextInt()][scan.nextInt()]; 10 | for (int mouses = scan.nextInt(); mouses > 0; mouses--) 11 | lab[scan.nextInt() - 1][scan.nextInt() - 1] = -1; 12 | lab[0][0] = 1; 13 | for (int x = 0; x < lab.length; x++) { 14 | for (int y = 0; y < lab[0].length; y++) { 15 | 16 | if (lab[x][y] != -1 && !(x == 0 && y == 0)) { 17 | int a = x - 1 < 0 || lab[x - 1][y] == -1 ? 0 : lab[x - 1][y]; 18 | int b = y - 1 < 0 || lab[x][y - 1] == -1 ? 0 : lab[x][y - 1]; 19 | lab[x][y] = a + b; 20 | } 21 | } 22 | } 23 | System.out.println(lab[lab.length - 1][lab[0].length - 1]); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2013_J1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.StringTokenizer; 7 | 8 | public class CCC_2013_J1 { 9 | 10 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | static StringTokenizer st; 12 | 13 | public static void main(String[] args) throws IOException { 14 | System.out.println(-readInt() + 2 * readInt()); 15 | } 16 | 17 | static String next() throws IOException { 18 | while (st == null || !st.hasMoreTokens()) 19 | st = new StringTokenizer(br.readLine().trim()); 20 | return st.nextToken(); 21 | } 22 | 23 | static long readLong() throws IOException { 24 | return Long.parseLong(next()); 25 | } 26 | 27 | static int readInt() throws IOException { 28 | return Integer.parseInt(next()); 29 | } 30 | 31 | static double readDouble() throws IOException { 32 | return Double.parseDouble(next()); 33 | } 34 | 35 | static String readLine() throws IOException { 36 | return br.readLine().trim(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2013_J4.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class CCC_2013_J4 { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int time = scan.nextInt(); 11 | int[] chores = new int[scan.nextInt()]; 12 | for (int x = 0; x < chores.length; x++) 13 | chores[x] = scan.nextInt(); 14 | Arrays.sort(chores); 15 | int count = 0; 16 | for (int x = 0; x < chores.length; x++) { 17 | if (time >= chores[x]) { 18 | time -= chores[x]; 19 | count++; 20 | } else 21 | break; 22 | } 23 | System.out.println(count); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2013_S5.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2013_S5 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int n = scan.nextInt(); 10 | int cost = 0; 11 | main: 12 | while (n > 1) { 13 | for (int x = 2; x * x <= n; x++) { 14 | if (n % x == 0) { 15 | int factor = n / x; 16 | n -= factor; 17 | cost += n / factor; 18 | continue main; 19 | } 20 | } 21 | n -= 1; 22 | cost += n; 23 | } 24 | System.out.println(cost); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2014_J1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2014_J1 { 6 | 7 | public static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int a = scan.nextInt(); 11 | int b = scan.nextInt(); 12 | int c = scan.nextInt(); 13 | if (a + b + c != 180) 14 | System.out.println("Error"); 15 | else if (a == 60 && b == 60) 16 | System.out.println("Equilateral"); 17 | else if (a == b || b == c || c == a) 18 | System.out.println("Isosceles"); 19 | else 20 | System.out.println("Scalene"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2014_J2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2014_J2 { 6 | public static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int v = scan.nextInt(); 10 | scan.nextLine(); 11 | String s = scan.nextLine(); 12 | int counter = 0; 13 | for (int x = 0; x < v; x++) { 14 | if (s.charAt(x) == 'A') 15 | counter++; 16 | else 17 | counter--; 18 | } 19 | if (counter == 0) 20 | System.out.println("Tie"); 21 | else if (counter > 0) 22 | System.out.println("A"); 23 | else 24 | System.out.println("B"); 25 | } 26 | } -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2014_J3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2014_J3 { 6 | public static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int n = scan.nextInt(); 10 | int antonia = 100; 11 | int david = 100; 12 | for (int x = 0; x < n; x++) { 13 | int a = scan.nextInt(); 14 | int d = scan.nextInt(); 15 | if (a > d) 16 | david -= a; 17 | else if (a < d) 18 | antonia -= d; 19 | } 20 | System.out.println(antonia + "\n" + david); 21 | } 22 | } -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2014_J4_S1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Scanner; 5 | 6 | public class CCC_2014_J4_S1 { 7 | 8 | public static Scanner scan = new Scanner(System.in); 9 | 10 | public static void main(String[] args) { 11 | ArrayList people = new ArrayList(); 12 | int k = scan.nextInt(); 13 | for (int x = 0; x < k; x++) 14 | people.add(x + 1); 15 | int m = scan.nextInt(); 16 | for (int x = 0; x < m; x++) { 17 | int i = scan.nextInt(); 18 | for (int y = people.size() - (people.size() % i); y >= i; y -= i) 19 | people.remove(y - 1); 20 | } 21 | for (int x : people) 22 | System.out.println(x); 23 | } 24 | } -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2014_J5_S2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Arrays; 5 | import java.util.Scanner; 6 | 7 | public class CCC_2014_J5_S2 { 8 | 9 | public static Scanner scan = new Scanner(System.in); 10 | 11 | public static void main(String[] args) { 12 | int n = scan.nextInt(); 13 | scan.nextLine(); 14 | ArrayList students1 = new ArrayList(Arrays.asList(scan.nextLine().split(" "))); 15 | ArrayList students2 = new ArrayList(Arrays.asList(scan.nextLine().split(" "))); 16 | 17 | main: 18 | for (int x = 0; x < n; x++) { 19 | for (int y = 0; y < n; y++) { 20 | if (y == x) 21 | continue; 22 | if (students1.get(x).equals(students2.get(y)) && students2.get(x).equals(students1.get(y))) 23 | continue main; 24 | } 25 | System.out.println("bad"); 26 | System.exit(0); 27 | } 28 | System.out.println("good"); 29 | } 30 | } -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2014_S3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | import java.util.Stack; 5 | 6 | public class CCC_2014_S3 { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | for (int x = scan.nextInt(); x > 0; x--) { 11 | int size = scan.nextInt(); 12 | Stack start = new Stack(); 13 | Stack side = new Stack(); 14 | start.push(0); 15 | side.push(0); 16 | int counter = 1; 17 | for (int y = 0; y < size; y++) 18 | start.push(scan.nextInt()); 19 | boolean yum = true; 20 | while (counter <= size) { 21 | if (start.peek() == counter) { 22 | start.pop(); 23 | counter++; 24 | } else if (side.peek() == counter) { 25 | side.pop(); 26 | counter++; 27 | } else { 28 | if (start.peek() == 0) { 29 | yum = false; 30 | break; 31 | } 32 | side.push(start.pop()); 33 | } 34 | } 35 | System.out.println(yum ? "Y" : "N"); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/ccc/CCC_2014_Stage_2_Troyangles.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class CCC_2014_Stage_2_Troyangles { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | char[][] table = new char[scan.nextInt()][]; 10 | scan.nextLine(); 11 | for (int x = 0; x < table.length; x++) 12 | table[x] = scan.nextLine().toCharArray(); 13 | int[][] solution = new int[table.length][table[0].length]; 14 | for (int x = table.length - 1; x >= 0; x--) { 15 | for (int y = 0; y < table[x].length; y++) { 16 | if (table[x][y] == '#') 17 | solution[x][y]++; 18 | if (table[x][y] == '#' && x + 1 < table.length && y + 1 < table[x].length && y - 1 >= 0 && table[x + 1][y] == '#' && table[x + 1][y + 1] == '#' && table[x + 1][y - 1] == '#') 19 | solution[x][y] += Math.min(Math.min(solution[x + 1][y], solution[x + 1][y + 1]), solution[x + 1][y - 1]); 20 | } 21 | } 22 | int sum = 0; 23 | for (int[] x : solution) 24 | for (int y : x) 25 | sum += y; 26 | System.out.println(sum); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/ccc/MockCCC_2014_J1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class MockCCC_2014_J1 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | double d1 = scan.nextInt(); 10 | int d2 = scan.nextInt(); 11 | int dose = scan.nextInt(); 12 | if (d1 > dose) 13 | System.out.println("Bob overdoses on day 1."); 14 | else if (d2 + d1 / 2.0 > dose) 15 | System.out.println("Bob overdoses on day 2."); 16 | else 17 | System.out.println("Bob never overdoses."); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/contest/ccc/MockCCC_2014_J2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class MockCCC_2014_J2 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | String s = ""; 10 | int length = scan.nextInt(); 11 | for (int x = 0; x <= length; x++) 12 | s += (length - x) % 2 == 0 ? new StringBuffer(scan.nextLine().trim()).reverse() : scan.nextLine().trim(); 13 | System.out.println(new StringBuffer(s).reverse().toString()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/contest/ccc/MockCCC_2014_J3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class MockCCC_2014_J3 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | double h = scan.nextDouble(); 10 | double m = scan.nextDouble() + h; 11 | double s = scan.nextDouble() + m; 12 | String parsed = ""; 13 | 14 | if (Math.round(h / 30) == 0) 15 | parsed += "12:"; 16 | else if (h / 30 < 10) 17 | parsed += "0" + (int)h / 30 + ":"; 18 | else 19 | parsed += (int)h / 30 + ":"; 20 | parsed += (((m / 6.0) % 60) < 10 ? "0" + (int)((m / 6.0) % 60) : (int)(m / 6.0) % 60) + ":"; 21 | parsed += Math.round((s / 6.0) % 60) < 10 ? "0" + (int)Math.round((s / 6.0) % 60) : (int)Math.round((s / 6.0) % 60); 22 | 23 | System.out.println(parsed); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/contest/ccc/MockCCC_2014_S1.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class MockCCC_2014_S1 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | StringBuilder s = new StringBuilder(scan.nextLine()); 10 | String find = scan.nextLine(); 11 | int index = s.reverse().indexOf(find); 12 | if (index == -1) 13 | System.out.println(-1); 14 | else 15 | System.out.println(s.length() - index); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/contest/ccc/MockCCC_2014_S2.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class MockCCC_2014_S2 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int maxSequence = 0; 10 | int stage = -2; // -1 going down, 0 is stay, 1 is going up 11 | int currSeqLength = 1; 12 | int length = scan.nextInt(); 13 | int prevNum = scan.nextInt(); 14 | for (int x = length - 1; x > 0; x--) { 15 | int currNum = scan.nextInt(); 16 | if (currNum < prevNum && stage != 1 && stage != 0) { 17 | stage = -1; 18 | currSeqLength++; 19 | } else if (currNum == prevNum && (stage == 0 || stage == -1)) { 20 | stage = 0; 21 | currSeqLength++; 22 | } else if (currNum > prevNum && (stage != -2)) { 23 | stage = 1; 24 | currSeqLength++; 25 | } else if (stage != 0 && stage != -2) { 26 | stage = -1; 27 | currSeqLength = 2; 28 | } 29 | if (currSeqLength > maxSequence && currSeqLength >= 3 && stage == 1) 30 | maxSequence = currSeqLength; 31 | prevNum = currNum; 32 | } 33 | System.out.println(maxSequence); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/contest/ccc/MockCCC_2014_S3.java: -------------------------------------------------------------------------------- 1 | package contest.ccc; 2 | 3 | import java.util.Arrays; 4 | import java.util.Comparator; 5 | import java.util.Scanner; 6 | 7 | public class MockCCC_2014_S3 { 8 | static Scanner scan = new Scanner(System.in); 9 | 10 | public static void main(String[] args) { 11 | int rows = scan.nextInt(); 12 | int columns = scan.nextInt(); 13 | int[][] sheet = new int[rows][columns]; 14 | for (int x = 0; x < rows; x++) 15 | for (int y = 0; y < columns; y++) 16 | sheet[x][y] = scan.nextInt(); 17 | for (int z = scan.nextInt(); z > 0; z--) { 18 | final int column = scan.nextInt() - 1; 19 | Arrays.sort(sheet, new Comparator() { 20 | @Override 21 | public int compare(int[] arg0, int[] arg1) { 22 | if (arg0[column] == arg1[column]) 23 | return 0; 24 | return arg0[column] < arg1[column] ? -1 : 1; 25 | } 26 | }); 27 | } 28 | for (int y = 0; y < rows; y++) { 29 | for (int x = 0; x < columns; x++) 30 | System.out.print(sheet[y][x] + " "); 31 | System.out.println(); 32 | } 33 | System.out.println(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/contest/ccc/MockCCC_2015_S4.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define SIZE 100005 6 | 7 | int D[SIZE], W[SIZE]; 8 | 9 | long long L[SIZE]; 10 | long long R[SIZE]; 11 | long long LR[SIZE]; 12 | 13 | int N; 14 | 15 | int main() { 16 | scanf("%d", &N); 17 | 18 | for (int i = 0; i < N; i++) { 19 | scanf("%d%d", &D[i], &W[i]); 20 | } 21 | for (int i = 0; i < N; i++) { 22 | if (i == 0) { 23 | L[i] = D[i]; 24 | R[i] = D[i]; 25 | LR[i] = max(0, D[i] - W[i + 1]); 26 | } else { 27 | L[i] = max(0, D[i] - W[i - 1]) + min(L[i - 1], R[i - 1]); 28 | R[i] = D[i] + LR[i - 1]; 29 | long long c1 = max(0, D[i] - W[i + 1]) + LR[i - 1]; 30 | long long c2 = min(L[i - 1], R[i - 1]) + max(0, D[i] - W[i + 1] - W[i - 1]); 31 | LR[i] = min(c1, c2); 32 | } 33 | } 34 | printf("%lld", min(L[N - 1], R[N - 1])); 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2006_DVAPUT.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define MOD 1000000000007ll; 6 | 7 | int n; 8 | char str[200001]; 9 | 10 | int main() { 11 | scanf("%d%s", &n, &str); 12 | int lo = 1; 13 | int hi = n; 14 | while (lo <= hi) { 15 | int mid = lo + (hi - lo) / 2; 16 | unordered_set hs; 17 | long long hash = 0; 18 | long long pow = 1; 19 | for (int i = 0; i < mid; i++) { 20 | pow = (26 * pow) % MOD; 21 | hash = (26 * hash + (long long)(str[i])) % MOD; 22 | } 23 | hs.insert(hash); 24 | bool success = false; 25 | for (int i = mid; i < n; i++) { 26 | hash = (26 * hash - pow * (long long)(str[i - mid]) + (long long)(str[i])) % MOD; 27 | if (hs.count(hash)) { 28 | success = true; 29 | break; 30 | } 31 | hs.insert(hash); 32 | } 33 | if (success) 34 | lo = mid + 1; 35 | else 36 | hi = mid - 1; 37 | } 38 | printf("%d\n", hi); 39 | } 40 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2006_HERMAN.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2006_HERMAN { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | double input = scan.nextInt(); 10 | System.out.printf("%.6f%n", input * input * Math.PI); 11 | System.out.printf("%.6f", input * input * 2); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2006_MODULO.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.HashSet; 4 | import java.util.Scanner; 5 | 6 | public class COCI_2006_MODULO { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | HashSet set = new HashSet(); 11 | for (int x = 0; x < 10; x++) 12 | set.add(scan.nextInt() % 42); 13 | System.out.println(set.size()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2006_PATRIK.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N; 21 | stack> s; 22 | ll ans; 23 | 24 | int main() { 25 | // freopen("in.txt", "r", stdin); 26 | // freopen("out.txt", "w", stdout); 27 | 28 | scanf("%d", &N); 29 | 30 | for (int i = 0; i < N; i++) { 31 | int h; 32 | scanf("%d", &h); 33 | ll pre = 0; 34 | ll c = 0; 35 | for (; !s.empty() && s.top().first < h; s.pop()) 36 | c++; 37 | if (!s.empty() && s.top().first == h) 38 | pre += s.top().second + 1; 39 | else if (!s.empty() && s.top().first > h) 40 | pre++; 41 | ans += (c += pre); 42 | s.push({h, pre}); 43 | } 44 | printf("%lld\n", ans); 45 | return 0; 46 | } 47 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2006_SJECISTA.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.StringTokenizer; 7 | 8 | public class COCI_2006_SJECISTA { 9 | 10 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | static StringTokenizer st; 12 | 13 | public static void main(String[] args) throws IOException { 14 | int n = readInt(); 15 | System.out.println(n * (n - 1) * (n - 2) * (n - 3) / 4 / 3 / 2); 16 | } 17 | 18 | static String next() throws IOException { 19 | while (st == null || !st.hasMoreTokens()) 20 | st = new StringTokenizer(br.readLine().trim()); 21 | return st.nextToken(); 22 | } 23 | 24 | static long readLong() throws IOException { 25 | return Long.parseLong(next()); 26 | } 27 | 28 | static int readInt() throws IOException { 29 | return Integer.parseInt(next()); 30 | } 31 | 32 | static double readDouble() throws IOException { 33 | return Double.parseDouble(next()); 34 | } 35 | 36 | static String readLine() throws IOException { 37 | return br.readLine().trim(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2007_SEMAFORI.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2007_SEMAFORI { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int n = scan.nextInt(); 10 | int d = scan.nextInt(); 11 | int[][] stoplights = new int[n][3]; 12 | for (int x = 0; x < n; x++) { 13 | stoplights[x][0] = scan.nextInt(); 14 | stoplights[x][1] = scan.nextInt(); 15 | stoplights[x][2] = scan.nextInt(); 16 | } 17 | int time = 0; 18 | 19 | for (int x = 0; x < stoplights.length; x++) { 20 | if (x == 0) 21 | time = stoplights[x][0]; 22 | else 23 | time += stoplights[x][0] - stoplights[x - 1][0]; 24 | int r = stoplights[x][1]; 25 | int g = stoplights[x][2]; 26 | if (time % (r + g) < r) 27 | time += r - time % (r + g); 28 | } 29 | System.out.println(time + d - stoplights[n - 1][0]); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2007_TRI.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2007_TRI { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int a = scan.nextInt(); 10 | int b = scan.nextInt(); 11 | int c = scan.nextInt(); 12 | if (a + b == c) 13 | System.out.printf("%d+%d=%d", a, b, c); 14 | else if (a - b == c) 15 | System.out.printf("%d-%d=%d", a, b, c); 16 | else if (a * b == c) 17 | System.out.printf("%d*%d=%d", a, b, c); 18 | else if (a / b == c) 19 | System.out.printf("%d/%d=%d", a, b, c); 20 | else if (b - c == a) 21 | System.out.printf("%d=%d-%d", a, b, c); 22 | else if (b * c == a) 23 | System.out.printf("%d=%d*%d", a, b, c); 24 | else if (b + c == a) 25 | System.out.printf("%d=%d+%d", a, b, c); 26 | else 27 | System.out.printf("%d=%d/%d", a, b, c); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2008_KEMIJA.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2008_KEMIJA { 6 | public static void main(String[] args) { 7 | Scanner scan = new Scanner(System.in); 8 | StringBuilder s = new StringBuilder(scan.nextLine()); 9 | String vowels = "aeiou"; 10 | for (int x = 1; x < s.length() - 1; x++) { 11 | if (s.charAt(x) == 'p' && vowels.indexOf(s.charAt(x - 1)) != -1 && vowels.indexOf(s.charAt(x + 1)) != -1) { 12 | s.delete(x, x + 2); 13 | } 14 | } 15 | System.out.println(s); 16 | scan.close(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2008_KORNISLAV.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class COCI_2008_KORNISLAV { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int[] nums = new int[4]; 11 | for (int x = 0; x < 4; x++) 12 | nums[x] = scan.nextInt(); 13 | Arrays.sort(nums); 14 | System.out.println(nums[0] * nums[2]); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2008_PERKET.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2008_PERKET { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int ingredients = scan.nextInt(); 10 | int[][] items = new int[ingredients][2]; 11 | for (int x = 0; x < items.length; x++) { 12 | items[x][0] = scan.nextInt(); 13 | items[x][1] = scan.nextInt(); 14 | } 15 | int min = minValue(items, 0, 1, 0); 16 | 17 | System.out.println(min); 18 | } 19 | 20 | private static int minValue(int[][] items, int i, int s, int b) { 21 | 22 | if (i == items.length - 1) { 23 | if (s == 1 && b == 0) 24 | return diff(items[i][0], items[i][1]); 25 | else { 26 | return Math.min(diff(s, b), diff(items[i][0] * s, items[i][1] + b)); 27 | } 28 | } 29 | int d1 = minValue(items, i + 1, s, b); 30 | int d2 = minValue(items, i + 1, s * items[i][0], b + items[i][1]); 31 | return d1 < d2 ? d1 : d2; 32 | } 33 | 34 | private static int diff(int sour, int bitter) { 35 | return Math.abs(sour - bitter); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2008_PET.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2008_PET { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int max = 0; 10 | int index = 0; 11 | for (int x = 1; x <= 5; x++) { 12 | int sum = scan.nextInt() + scan.nextInt() + scan.nextInt() + scan.nextInt(); 13 | if (sum > max) { 14 | max = sum; 15 | index = x; 16 | } 17 | } 18 | System.out.println(index + " " + max); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2008_PTICE.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2008_PTICE { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | char[] a = {'A', 'B', 'C'}; 10 | char[] b = {'B', 'A', 'B', 'C'}; 11 | char[] c = {'C', 'C', 'A', 'A', 'B', 'B'}; 12 | int a1 = 0; 13 | int b1 = 0; 14 | int c1 = 0; 15 | int max = 0; 16 | int num = scan.nextInt(); 17 | scan.nextLine(); 18 | char[] seq = scan.nextLine().toCharArray(); 19 | for (int x = 0; x < num; x++) { 20 | if (seq[x] == a[x % a.length]) 21 | a1++; 22 | if (seq[x] == b[x % b.length]) 23 | b1++; 24 | if (seq[x] == c[x % c.length]) 25 | c1++; 26 | } 27 | max = Math.max(Math.max(a1, b1), c1); 28 | System.out.println(max); 29 | if (a1 == max) 30 | System.out.println("Adrian"); 31 | if (b1 == max) 32 | System.out.println("Bruno"); 33 | if (c1 == max) 34 | System.out.println("Goran"); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2008_SKOCIMIS.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2008_SKOCIMIS { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int a = scan.nextInt(); 10 | int b = scan.nextInt(); 11 | int c = scan.nextInt(); 12 | System.out.println(Math.max(b - a - 1, c - b - 1)); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2009_DOMINO.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.StringTokenizer; 7 | 8 | public class COCI_2009_DOMINO { 9 | 10 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | static StringTokenizer st; 12 | 13 | public static void main(String[] args) throws IOException { 14 | int n = readInt(); 15 | System.out.println((n) * (n + 1) * (n + 2) / 2); 16 | } 17 | 18 | static String next() throws IOException { 19 | while (st == null || !st.hasMoreTokens()) 20 | st = new StringTokenizer(br.readLine().trim()); 21 | return st.nextToken(); 22 | } 23 | 24 | static long readLong() throws IOException { 25 | return Long.parseLong(next()); 26 | } 27 | 28 | static int readInt() throws IOException { 29 | return Integer.parseInt(next()); 30 | } 31 | 32 | static double readDouble() throws IOException { 33 | return Double.parseDouble(next()); 34 | } 35 | 36 | static String readLine() throws IOException { 37 | return br.readLine().trim(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2009_KABOOM.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define MOD 10301 6 | #define SIZE 1001 7 | 8 | int n, a, b; 9 | 10 | int dp1[SIZE][SIZE][2]; 11 | int dp2[SIZE][SIZE][2]; 12 | 13 | int solve2(int left, int s, int change) { 14 | if (dp2[left][s][change] != -1) 15 | return dp2[left][s][change]; 16 | int res = change; 17 | if (left > 0) 18 | res = (res + solve2(left - 1, s + 1, 0)) % MOD; 19 | if (left >= s) 20 | res = (res + solve2(left - s, s, 1)) % MOD; 21 | return dp2[left][s][change] = res; 22 | } 23 | 24 | int solve1(int left, int s, int change) { 25 | if (dp1[left][s][change] != -1) 26 | return dp1[left][s][change]; 27 | int res = 0; 28 | if (change != 0) 29 | res = (res + solve2(left, b, 1)) % MOD; 30 | if (left > 0) 31 | res = (res + solve1(left - 1, s + 1, 0)) % MOD; 32 | if (left >= s) 33 | res = (res + solve1(left - s, s, 1)) % MOD; 34 | return dp1[left][s][change] = res; 35 | } 36 | int main() { 37 | scanf("%d%d%d", &n, &a, &b); 38 | memset(dp1, -1, sizeof dp1); 39 | memset(dp2, -1, sizeof dp2); 40 | printf("%d\n", solve1(n - a - b, a, 1)); 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2009_MALI.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int n; 6 | int A[101], B[101], TA[101], TB[101]; 7 | 8 | int main() { 9 | scanf("%d", &n); 10 | for (int x = 0; x < n; x++) { 11 | int a, b; 12 | scanf("%d%d", &a, &b); 13 | A[a]++; 14 | B[b]++; 15 | for (int y = 1; y <= 100; y++) { 16 | TA[y] = A[y]; 17 | TB[y] = B[y]; 18 | } 19 | int maxV = -(1 << 30); 20 | int ia = 1; 21 | int ib = 100; 22 | while (true) { 23 | while (ia <= 100 && TA[ia] == 0) 24 | ia++; 25 | while (ib >= 1 && TB[ib] == 0) 26 | ib--; 27 | if (ia == 101 || ib == 0) 28 | break; 29 | maxV = max(maxV, ia + ib); 30 | if (TA[ia] >= TB[ib]) { 31 | TA[ia] -= TB[ib]; 32 | TB[ib] = 0; 33 | } else { 34 | TB[ib] -= TA[ia]; 35 | TA[ia] = 0; 36 | } 37 | } 38 | printf("%d\n", maxV); 39 | } 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2009_OGRADA.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int n, x; 6 | int leftB[1000000], in[1000000], q[1000000]; 7 | int main() { 8 | scanf("%d%d", &n, &x); 9 | for (int i = 0; i < n; i++) { 10 | scanf("%d", &in[i]); 11 | leftB[i] = -1; 12 | } 13 | int l = 0, r = 0; 14 | for (int i = 0; i < n; i++) { 15 | if (r > l && q[l] <= i - x) 16 | l++; 17 | while (r > l && in[i] <= in[q[r - 1]]) 18 | r--; 19 | q[r++] = i; 20 | if (i >= x - 1) { 21 | leftB[i] = in[q[l]]; 22 | } 23 | } 24 | long long ans = 0; 25 | int cnt = 0; 26 | int lastUsed = 1 << 30; 27 | l = 0; 28 | r = 0; 29 | for (int i = n - 1; i >= 0; i--) { 30 | if (r > l && q[l] >= i + x) 31 | l++; 32 | while (r > l && leftB[i] >= leftB[q[r - 1]]) 33 | r--; 34 | q[r++] = i; 35 | ans += in[i] - leftB[q[l]]; 36 | if (lastUsed - i >= x || (leftB[lastUsed] < in[i] && leftB[lastUsed] < leftB[q[l]])) { 37 | lastUsed = q[l]; 38 | cnt++; 39 | } 40 | } 41 | printf("%lld\n%d\n", ans, cnt); 42 | } 43 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2009_SOK.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2009_SOK { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | double a = scan.nextInt(); 10 | double b = scan.nextInt(); 11 | double c = scan.nextInt(); 12 | double i = scan.nextInt(); 13 | double j = scan.nextInt(); 14 | double k = scan.nextInt(); 15 | double a1 = a / i; 16 | double b1 = b / j; 17 | double c1 = c / k; 18 | if (a1 <= b1 && a1 <= c1) { 19 | a = 0; 20 | b -= a1 * j; 21 | c -= a1 * k; 22 | } else if (b1 <= a1 && b1 <= c1) { 23 | b = 0; 24 | a -= b1 * i; 25 | c -= b1 * k; 26 | } else { 27 | c = 0; 28 | b -= c1 * j; 29 | a -= c1 * i; 30 | } 31 | System.out.printf("%.6f %.6f %.6f", a, b, c); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2009_SPAVANAC.java: -------------------------------------------------------------------------------- 1 | package contest.coci; 2 | 3 | import java.util.Scanner; 4 | 5 | public class COCI_2009_SPAVANAC { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int min = scan.nextInt() * 60 + scan.nextInt() - 45; 10 | if (min < 0) 11 | min += 1440; 12 | System.out.println(min / 60 + " " + min % 60); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2015_AKCIJA.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define MAX_N 100000 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N, cost[MAX_N]; 21 | 22 | int main() { 23 | // freopen("in.txt", "r", stdin); 24 | // freopen("out.txt", "w", stdout); 25 | 26 | scanf("%d", &N); 27 | for (int i = 0; i < N; i++) 28 | scanf("%d", cost + i); 29 | sort(cost, cost + N); 30 | reverse(cost, cost + N); 31 | int ans = 0; 32 | for (int i = 0; i < N; i += 3) { 33 | ans += cost[i]; 34 | if (i + 1 < N) 35 | ans += cost[i + 1]; 36 | } 37 | printf("%d\n", ans); 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2015_BALONI.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define MAX_N 1000000 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N, H[MAX_N]; 21 | multiset h; 22 | 23 | int main() { 24 | // freopen("in.txt", "r", stdin); 25 | // freopen("out.txt", "w", stdout); 26 | 27 | scanf("%d", &N); 28 | for (int i = 0; i < N; i++) 29 | scanf("%d", H + i); 30 | for (int i = 0; i < N; i++) { 31 | if (h.count(H[i])) 32 | h.erase(h.find(H[i])); 33 | h.insert(H[i] - 1); 34 | } 35 | printf("%d\n", h.size()); 36 | return 0; 37 | } 38 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2015_ESEJ.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int A, B, n; 21 | 22 | int main() { 23 | // freopen("in.txt", "r", stdin); 24 | // freopen("out.txt", "w", stdout); 25 | 26 | scanf("%d%d", &A, &B); 27 | 28 | for (char i = 'a'; i <= 'z'; i++) 29 | for (char j = 'a'; j <= 'z'; j++) 30 | for (char k = 'a'; k <= 'z'; k++) 31 | for (char l = 'a'; l <= 'z' && n < max(A, B / 2); l++, n++) 32 | printf("%c%c%c%c ", i, j, k, l); 33 | printf("\n"); 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2015_GEPPETTO.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define MAX_N 20 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N, M; 21 | int A[MAX_N][MAX_N]; 22 | 23 | int main() { 24 | // freopen("in.txt", "r", stdin); 25 | // freopen("out.txt", "w", stdout); 26 | 27 | scanf("%d%d", &N, &M); 28 | 29 | for (int i = 0; i < M; i++) { 30 | int a, b; 31 | scanf("%d%d", &a, &b); 32 | --a, --b; 33 | A[a][b] = A[b][a] = 1; 34 | } 35 | 36 | int ans = 0; 37 | for (int i = 0; i < 1 << N; i++) { 38 | bool valid = 1; 39 | for (int j = 0; j < N; j++) 40 | for (int k = j + 1; k < N; k++) 41 | if (i & 1 << j && i & 1 << k && A[j][k]) 42 | valid = 0; 43 | ans += valid; 44 | } 45 | printf("%d\n", ans); 46 | return 0; 47 | } 48 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2015_MOLEKULE.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define MAX_N 100000 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N; 21 | vector edges; 22 | vector adj[MAX_N]; 23 | int color[MAX_N]; 24 | 25 | void dfs(int u, int p, int c) { 26 | color[u] = c; 27 | for (int v : adj[u]) 28 | if (v != p) 29 | dfs(v, u, !c); 30 | } 31 | 32 | int main() { 33 | // freopen("in.txt", "r", stdin); 34 | // freopen("out.txt", "w", stdout); 35 | 36 | scanf("%d", &N); 37 | 38 | for (int i = 0; i < N - 1; i++) { 39 | int u, v; 40 | scanf("%d%d", &u, &v); 41 | --u, --v; 42 | adj[u].push_back(v); 43 | adj[v].push_back(u); 44 | edges.push_back({u, v}); 45 | } 46 | 47 | dfs(0, -1, 0); 48 | 49 | for (int i = 0; i < N - 1; i++) 50 | printf("%d\n", color[edges[i].first]); 51 | 52 | return 0; 53 | } 54 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2015_POT.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N, ans; 21 | 22 | int main() { 23 | // freopen("in.txt", "r", stdin); 24 | // freopen("out.txt", "w", stdout); 25 | 26 | scanf("%d", &N); 27 | for (int i = 0; i < N; i++) { 28 | int val; 29 | scanf("%d", &val); 30 | ans += (int)pow(val / 10, val % 10); 31 | } 32 | 33 | printf("%d\n", ans); 34 | return 0; 35 | } 36 | -------------------------------------------------------------------------------- /src/contest/coci/COCI_2015_VUDU_2.cc: -------------------------------------------------------------------------------- 1 | // Andy Rock's Solution 2 | 3 | #include 4 | using namespace std; 5 | 6 | int N, P; 7 | long long int a[1000001]; 8 | int perm[1000001], bit[1000002]; 9 | 10 | int queryAndUpdate(int pos) { 11 | int ans = 0; 12 | for (int i = pos; i > 0; i -= i & -i) 13 | ans += bit[i]; 14 | for (int i = pos; i <= N + 1; i += i & -i) 15 | bit[i]++; 16 | 17 | return ans; 18 | } 19 | 20 | bool cmp(int x, int y) { 21 | return a[x] < a[y]; 22 | } 23 | 24 | int main() { 25 | scanf("%d", &N); 26 | for (int i = 1; i <= N; i++) 27 | scanf("%lld", a + i); 28 | 29 | scanf("%d", &P); 30 | for (int i = 1; i <= N; i++) 31 | a[i] += a[i - 1] - P; 32 | 33 | for (int i = 0; i <= N; i++) 34 | perm[i] = i; 35 | sort(perm, perm + N + 1, cmp); 36 | 37 | long long int ans = 0; 38 | for (int i = 0; i <= N; i++) 39 | ans += queryAndUpdate(perm[i] + 1); 40 | 41 | printf("%lld\n", ans); 42 | } 43 | -------------------------------------------------------------------------------- /src/contest/codeforces/Round_302C.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | typedef long long ll; 5 | int n, m, b; 6 | ll mod; 7 | ll dp[501][501]; 8 | int num[501]; 9 | int main() { 10 | scanf("%d%d%d%lld", &n, &m, &b, &mod); 11 | for (int i = 0; i < n; i++) 12 | scanf("%d", &num[i]); 13 | for (int i = 0; i < n; i++) { 14 | for (int j = 0; j <= m; j++) { 15 | if (i == 0 && j * num[i] <= b) 16 | dp[j][j * num[i]] = 1ll; 17 | else 18 | for (int k = 0; k <= b; k++) { 19 | if (j && k - num[i] >= 0) 20 | dp[j][k] = (dp[j][k] + dp[j - 1][k - num[i]]) % mod; 21 | } 22 | } 23 | } 24 | ll res = 0; 25 | for (int i = 0; i <= b; i++) 26 | res = (res + dp[m][i]) % mod; 27 | printf("%lld\n", res); 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/codejam/GCJ_2017_Qualification_A.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int T, K; 6 | string S; 7 | 8 | int main() { 9 | cin >> T; 10 | for (int t = 1; t <= T; t++) { 11 | cin >> S >> K; 12 | int ans = 0; 13 | for (int i = 0; i <= (int)S.size() - K; i++) { 14 | if (S[i] == '-') { 15 | for (int j = 0; j < K; j++) 16 | S[i + j] = S[i + j] == '-' ? '+' : '-'; 17 | ans++; 18 | } 19 | } 20 | bool valid = true; 21 | for (int i = 0; i < (int)S.size(); i++) 22 | if (S[i] == '-') 23 | valid = false; 24 | if (valid) 25 | cout << "Case #" << t << ": " << ans << endl; 26 | else 27 | cout << "Case #" << t << ": IMPOSSIBLE" << endl; 28 | } 29 | return 0; 30 | } 31 | -------------------------------------------------------------------------------- /src/contest/codejam/GCJ_2017_Qualification_C.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int T; 6 | long long N, K; 7 | map occ; 8 | 9 | int main() { 10 | cin >> T; 11 | 12 | for (int t = 1; t <= T; t++) { 13 | cin >> N >> K; 14 | K--; 15 | occ.clear(); 16 | 17 | occ[N] = 1; 18 | 19 | while (K) { 20 | long long key = (occ.rbegin())->first; 21 | if (occ[key] > K) { 22 | break; 23 | } else { 24 | if (occ.find((key - 1) / 2) != occ.end()) 25 | occ[(key - 1) / 2] += occ[key]; 26 | else 27 | occ[(key - 1) / 2] = occ[key]; 28 | if (occ.find(key / 2) != occ.end()) 29 | occ[key / 2] += occ[key]; 30 | else 31 | occ[key / 2] = occ[key]; 32 | K -= occ[key]; 33 | occ.erase(key); 34 | } 35 | } 36 | long long gap = occ.rbegin()->first; 37 | cout << "Case #" << t << ": " << gap / 2 << " " << (gap - 1) / 2 << endl; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/contest/codejam/GCJ_2019_Qualification_C.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | 4 | def gcd(a, b): 5 | return a if b == 0 else gcd(b, a % b) 6 | 7 | 8 | if __name__ == "__main__": 9 | T = int(input()) 10 | 11 | for t in range(1, T + 1): 12 | N, L = [int(_) for _ in input().split()] 13 | pairs = [int(_) for _ in input().split()] 14 | i = 0 15 | while pairs[i] == pairs[i + 1]: 16 | i += 1 17 | seq = [0] * (L + 1) 18 | seq[i + 1] = gcd(pairs[i], pairs[i + 1]) 19 | for j in range(i + 1, len(pairs)): 20 | seq[j + 1] = pairs[j] // seq[j] 21 | for j in range(i, -1, -1): 22 | seq[j] = pairs[j] // seq[j + 1] 23 | val = sorted(list(set(seq))) 24 | alphaMap = {} 25 | for i, item in enumerate(val): 26 | alphaMap[item] = chr(i + 65) 27 | 28 | print("Case #{0}: {1}".format(t, "".join([alphaMap[x] for x in seq]))) 29 | -------------------------------------------------------------------------------- /src/contest/dmoj/DMOPC_2014_Aurora.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | typedef long long ll; 6 | 7 | int n, m; 8 | ll a, b, c; 9 | int in[100001]; 10 | ll prefix[100001], suffix[100001]; 11 | int main() { 12 | scanf("%d%d%lld%lld%lld", &n, &m, &a, &b, &c); 13 | for (int i = 1; i <= n; i++) { 14 | scanf("%d", &in[i]); 15 | } 16 | sort(in + 1, in + n + 1); 17 | for (int i = 1; i <= n; i++) 18 | prefix[i] = (in[i] - 1) * b + prefix[i - 1]; 19 | for (int i = n; i >= 1; i--) 20 | suffix[i] = suffix[i + 1] + (in[i] - 1) * a + c * (n - i); 21 | ll minV = 1ll << 60; 22 | for (int i = 0; i <= n; i++) 23 | minV = min(minV, prefix[i] + suffix[i + 1]); 24 | cout << minV << endl; 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /src/contest/dmoj/DMOPC_2014_Sawmill_Scheme.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define VSIZE 50500 10 | 11 | using namespace std; 12 | typedef long long ll; 13 | typedef pair pi; 14 | typedef pair pll; 15 | 16 | int n, m; 17 | 18 | vector> adj(1000000); 19 | double prob[1000000]; 20 | bool sawmill[1000000]; 21 | 22 | int main() { 23 | scanf("%d%d", &n, &m); 24 | for (int x = 0; x < m; x++) { 25 | int a, b; 26 | 27 | scanf("%d%d", &a, &b); 28 | a--, b--; 29 | adj[a].pb(b); 30 | sawmill[a] = true; 31 | } 32 | prob[0] = 1.0; 33 | for (int x = 0; x < n; x++) 34 | for (int i : adj[x]) 35 | prob[i] += prob[x] / adj[x].size(); 36 | for (int x = 0; x < n; x++) 37 | if (!sawmill[x]) 38 | printf("%.10f\n", prob[x]); 39 | return 0; 40 | } 41 | -------------------------------------------------------------------------------- /src/contest/dmoj/MNYC_2017_2048.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N; 21 | int val[60]; 22 | int main() { 23 | // freopen("in.txt", "r", stdin); 24 | // freopen("out.txt", "w", stdout); 25 | 26 | scanf("%d", &N); 27 | 28 | for (int i = 0; i < N; i++) { 29 | int x; 30 | scanf("%d", &x); 31 | int cnt = 0; 32 | while (x) { 33 | x >>= 1; 34 | cnt++; 35 | } 36 | val[cnt]++; 37 | } 38 | 39 | ll ans = 0; 40 | 41 | for (int i = 1; i < 60; i++) { 42 | val[i] += val[i - 1] / 2; 43 | if (val[i]) 44 | ans = 1LL << (i - 1); 45 | } 46 | 47 | printf("%lld\n", ans); 48 | return 0; 49 | } 50 | -------------------------------------------------------------------------------- /src/contest/dmoj/MNYC_2017_ASCII_Art_II.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int C, R; 21 | unordered_set symbols; 22 | 23 | int main() { 24 | // freopen("in.txt", "r", stdin); 25 | // freopen("out.txt", "w", stdout); 26 | 27 | cin >> C >> R; 28 | cin.ignore(); 29 | 30 | string line; 31 | int ans = 0; 32 | for (int j = 0; j < R; j++) { 33 | getline(cin, line); 34 | for (int i = 0; i < (int)line.size(); i++) 35 | if (line[i] != ' ') { 36 | symbols.insert(line[i]); 37 | ans++; 38 | } 39 | } 40 | ans += (int)symbols.size(); 41 | if (symbols.count('.')) 42 | ans--; 43 | printf("%d\n", ans); 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /src/contest/dmoj/TLE_2016_Cubes.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N, ans; 21 | int p[] = {0, 1, 2, 3, 4, 5, 6, 7}, g[8][8]; 22 | 23 | int main() { 24 | // freopen("in.txt", "r", stdin); 25 | // freopen("out.txt", "w", stdout); 26 | 27 | scanf("%d", &N); 28 | for (int i = 0; i < N; i++) { 29 | int u, v; 30 | scanf("%d%d", &u, &v); 31 | --u, --v; 32 | g[u][v] = g[v][u] = 1; 33 | } 34 | 35 | do { 36 | if (g[p[0]][p[1]] && g[p[0]][p[3]] && g[p[1]][p[2]] && g[p[2]][p[3]] && g[p[0]][p[5]] && 37 | g[p[1]][p[4]] && g[p[2]][p[7]] && g[p[3]][p[6]] && g[p[4]][p[5]] && g[p[4]][p[7]] && 38 | g[p[5]][p[6]] && g[p[6]][p[7]]) 39 | ans = 1; 40 | } while (next_permutation(p, p + 8)); 41 | printf("%s\n", ans ? "Ja" : "Nej"); 42 | return 0; 43 | } 44 | -------------------------------------------------------------------------------- /src/contest/dmoj/TLE_2016_Shepherding.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | ll R, C, K; 21 | 22 | int main() { 23 | // freopen("in.txt", "r", stdin); 24 | // freopen("out.txt", "w", stdout); 25 | 26 | scanf("%lld%lld%lld", &R, &C, &K); 27 | ll r = ceil(sqrt(K)); 28 | ll c = (K + r - 1) / r; 29 | if (r > R) { 30 | r = R; 31 | c = (K + r - 1) / r; 32 | } 33 | if (c > C) { 34 | c = C; 35 | r = (K + c - 1) / c; 36 | } 37 | printf("%lld\n", 2 * r + 2 * c); 38 | return 0; 39 | } 40 | -------------------------------------------------------------------------------- /src/contest/dmoj/TLE_2016_Stack_Of_Presents.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define MAX_N 100000 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int N; 21 | int W[MAX_N]; 22 | 23 | int main() { 24 | // freopen("in.txt", "r", stdin); 25 | // freopen("out.txt", "w", stdout); 26 | 27 | scanf("%d", &N); 28 | for (int i = 0; i < N; i++) 29 | scanf("%d", &W[i]); 30 | 31 | sort(W, W + N); 32 | int sum = 0; 33 | int ans = 0; 34 | for (int i = 0; i < N; i++) { 35 | if (sum <= W[i]) { 36 | sum += W[i]; 37 | ans++; 38 | } 39 | } 40 | printf("%d\n", ans); 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /src/contest/dmoj/The_Torture_Chamber.cc: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | long long start, end2; 5 | bool sieve1[1000000]; 6 | bool sieve2[20000100]; 7 | int main() { 8 | scanf("%lld%lld", &start, &end2); 9 | if (start != 1) 10 | start--; 11 | end2--; 12 | int end1 = (int)(sqrt(end2)); 13 | 14 | vector ll; 15 | for (int x = 3; x < end1; x += 2) 16 | sieve1[x] = true; 17 | for (int x = 1; x < end1; x++) { 18 | if (!sieve1[x]) { 19 | ll.push_back(x + 1); 20 | } 21 | } 22 | long long cnt = 0; 23 | for (long long x : ll) { 24 | long long next = (start + x) / x; 25 | for (long long y = next * x - 1; y >= 0 && y < end2; y += x) 26 | if (y - start >= 0) { 27 | if (!sieve2[(int)(y - start)]) 28 | cnt++; 29 | sieve2[(int)(y - start)] = true; 30 | } 31 | } 32 | printf("%lld\n", (end2 - start) - cnt); 33 | return 0; 34 | } 35 | -------------------------------------------------------------------------------- /src/contest/dmoj/VMSS_Tree_Planting.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define MOD 1000000007 6 | int bit[4100][4100]; 7 | int n, ans; 8 | 9 | void update(int x, int y, int val) { 10 | for (int indx = x; indx < 4100; indx += (indx & -indx)) 11 | bit[indx][y] = (bit[indx][y] + val) % MOD; 12 | } 13 | 14 | int sum(int x, int y) { 15 | int sum = 0; 16 | for (int indx = x; indx > 0; indx -= (indx & -indx)) 17 | sum = (sum + bit[indx][y]) % MOD; 18 | return sum; 19 | } 20 | 21 | pair getPoint(int x, int y) { 22 | return make_pair(x - y + 2000, x + y); 23 | } 24 | int main() { 25 | scanf("%d", &n); 26 | for (int i = 0; i < n; i++) { 27 | int j, r, c, t; 28 | scanf("%d%d%d%d", &j, &r, &c, &t); 29 | 30 | if (j == 1) { 31 | pair p1 = getPoint(r, c); 32 | update(p1.first, p1.second, t); 33 | } else { 34 | pair p1 = getPoint(r - t - 1, c + t + 1); 35 | pair p2 = getPoint(r, c); 36 | ans = (ans + sum(p2.first, p2.second) - sum(p1.first, p1.second)) % MOD; 37 | } 38 | } 39 | printf("%d\n", ans); 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/contest/dmoj/inaho.h: -------------------------------------------------------------------------------- 1 | #ifndef INAHO_H_ 2 | #define INAHO_H_ 3 | 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif /* __cplusplus */ 7 | 8 | void Init(int N); 9 | void AddEdge(int U, int V); 10 | void RemoveLastEdge(); 11 | int GetSize(int U); 12 | 13 | #ifdef __cplusplus 14 | } 15 | #endif /* __cplusplus */ 16 | 17 | #endif /* INAHO_H_ */ 18 | -------------------------------------------------------------------------------- /src/contest/dwite/DWITE_2006_Floppy_Disc.java: -------------------------------------------------------------------------------- 1 | package contest.dwite; 2 | 3 | import java.util.Scanner; 4 | 5 | public class DWITE_2006_Floppy_Disc { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int t = 0; t < 5; t++) { 10 | boolean[] disc = new boolean[1441]; 11 | disc[0] = true; 12 | int numOfFiles = scan.nextInt(); 13 | int[] files = new int[numOfFiles + 1]; 14 | for (int x = 1; x <= numOfFiles; x++) 15 | files[x] = scan.nextInt(); 16 | int max = 0; 17 | for (int x = 1; x <= numOfFiles; x++) { 18 | for (int y = disc.length - 1; y > 0 && files[x] <= y; y--) { 19 | if (!disc[y]) { 20 | disc[y] = disc[y - files[x]]; 21 | } 22 | if (disc[y] && y > max) 23 | max = y; 24 | } 25 | } 26 | System.out.println(1440 - max); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/contest/dwite/DWITE_2006_Prime_Palindrome.java: -------------------------------------------------------------------------------- 1 | package contest.dwite; 2 | 3 | import java.util.Scanner; 4 | 5 | public class DWITE_2006_Prime_Palindrome { 6 | public static void main(String[] args) { 7 | Scanner scan = new Scanner(System.in); 8 | 9 | boolean[] primes = new boolean[999999]; 10 | primes[0] = true; 11 | for (int x = 1; x < primes.length; x += 2) 12 | if (x + 1 % 2 == 0) 13 | primes[x] = true; 14 | for (int x = 1; x * x < primes.length; x++) 15 | if (primes[x] == false) 16 | for (int y = (x + 1) * (x + 1) - 1; y < primes.length; y += (x + 1)) 17 | primes[y] = true; 18 | 19 | for (int z = 5; z > 0; z--) { 20 | int count = 0; 21 | int start = scan.nextInt(); 22 | int end = scan.nextInt(); 23 | for (int x = start; x <= end; x++) 24 | if (!primes[x - 1] && isPalindrome(Integer.toString(x))) 25 | count++; 26 | 27 | System.out.println(count); 28 | } 29 | scan.close(); 30 | } 31 | 32 | private static boolean isPalindrome(String x) { 33 | return new StringBuilder(x).reverse().toString().equals(x); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/contest/dwite/DWITE_2007_Cubes_In_A_Pyramid.java: -------------------------------------------------------------------------------- 1 | package contest.dwite; 2 | 3 | import java.util.Scanner; 4 | 5 | public class DWITE_2007_Cubes_In_A_Pyramid { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] arg) { 9 | double l = scan.nextDouble(); 10 | double h = scan.nextDouble(); 11 | System.out.println((int)Math.ceil(l * l * h * (1.0 / 3.0))); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/contest/dwite/DWITE_2007_Vanilla_Primes.java: -------------------------------------------------------------------------------- 1 | package contest.dwite; 2 | 3 | import java.util.Scanner; 4 | 5 | public class DWITE_2007_Vanilla_Primes { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | System.out.println(isPrime(scan.nextInt()) ? "prime" : "not"); 10 | } 11 | 12 | private static boolean isPrime(int n) { 13 | if (n <= 1) 14 | return false; 15 | if (n == 2) 16 | return true; 17 | if (n % 2 == 0) 18 | return false; 19 | if (n < 9) 20 | return true; 21 | if (n % 3 == 0) 22 | return false; 23 | 24 | long counter = 5; 25 | while ((counter * counter) <= n) { 26 | if (n % counter == 0) 27 | return false; 28 | if (n % (counter + 2) == 0) 29 | return false; 30 | counter += 6; 31 | } 32 | 33 | return true; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/contest/hackerrank/WOC_30_A.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define MAX_T 100 6 | 7 | int C[MAX_T]; 8 | 9 | int main() { 10 | int N, T; 11 | scanf("%d%d", &N, &T); 12 | 13 | for (int i = 0; i < T; i++) 14 | scanf("%d", C + i); 15 | 16 | int ans = 0; 17 | int curr = N; 18 | 19 | for (int i = 0; i < T - 1; i++) { 20 | curr -= C[i]; 21 | if (curr < 5) { 22 | ans += N - curr; 23 | curr += N - curr; 24 | } 25 | } 26 | printf("%d\n", ans); 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/hackerrank/WOC_30_B.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int main() { 6 | int N; 7 | scanf("%d", &N); 8 | N--; 9 | 10 | for (int i = 0; i < N; i++) 11 | printf("min(int, "); 12 | printf("int"); 13 | for (int i = 0; i < N; i++) 14 | printf(")"); 15 | printf("\n"); 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /src/contest/hackerrank/WOC_30_C.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int N; 6 | const string vowels = "aeiou"; 7 | const string consonants = "bcdfghjklmnpqrstvwxz"; 8 | 9 | void solve(int n, bool isVowel, string curr) { 10 | if (n == N) { 11 | puts(curr.c_str()); 12 | return; 13 | } 14 | if (isVowel) 15 | for (int i = 0; i < (int)vowels.size(); i++) 16 | solve(n + 1, !isVowel, curr + vowels[i]); 17 | else 18 | for (int i = 0; i < (int)consonants.size(); i++) 19 | solve(n + 1, !isVowel, curr + consonants[i]); 20 | } 21 | 22 | int main() { 23 | ios_base::sync_with_stdio(false); 24 | cin.tie(NULL); 25 | cin >> N; 26 | solve(0, 0, ""); 27 | solve(0, 1, ""); 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_1994_The_Triangle.java: -------------------------------------------------------------------------------- 1 | package contest.ioi; 2 | 3 | import java.util.Scanner; 4 | 5 | public class IOI_1994_The_Triangle { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int rows = scan.nextInt(); 10 | int[][] triangle = new int[rows][]; 11 | for (int x = 0; x < triangle.length; x++) { 12 | triangle[x] = new int[x + 1]; 13 | for (int y = 0; y < triangle[x].length; y++) 14 | triangle[x][y] = scan.nextInt(); 15 | } 16 | for (int x = triangle.length - 2; x >= 0; x--) 17 | for (int y = 0; y < triangle[x].length; y++) 18 | triangle[x][y] += Math.max(triangle[x + 1][y], triangle[x + 1][y + 1]); 19 | System.out.println(triangle[0][0]); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2000_Palindrome.java: -------------------------------------------------------------------------------- 1 | package contest.ioi; 2 | 3 | import java.util.Scanner; 4 | 5 | public class IOI_2000_Palindrome { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int length = scan.nextInt(); 10 | scan.nextLine(); 11 | String s1 = scan.nextLine(); 12 | int[][] dp = new int[2][length + 1]; 13 | for (int x = 1; x <= length; x++) { 14 | for (int y = 1; y <= length; y++) { 15 | if (s1.charAt(length - y) == s1.charAt(x - 1)) 16 | dp[x % 2][y] = dp[(x - 1) % 2][y - 1] + 1; 17 | else 18 | dp[x % 2][y] = Math.max(dp[(x - 1) % 2][y], dp[x % 2][y - 1]); 19 | } 20 | } 21 | System.out.println(length - dp[length % 2][length]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2002_Batch_Scheduling.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define SIZE 10005 6 | 7 | int N, S; 8 | int T[SIZE], F[SIZE]; 9 | int dp[SIZE], sumT[SIZE], sumF[SIZE]; 10 | 11 | deque q; 12 | 13 | inline double g(int k, int i) { 14 | return ((double)dp[k] - (double)dp[i]) / ((double)sumT[k] - (double)sumT[i]); 15 | } 16 | int main() { 17 | scanf("%d%d", &N, &S); 18 | for (int x = 0; x < N; x++) 19 | scanf("%d%d", &T[x], &F[x]); 20 | for (int i = N - 1; i >= 0; i--) { 21 | sumT[i] = sumT[i + 1] + T[i]; 22 | sumF[i] = sumF[i + 1] + F[i]; 23 | } 24 | q.push_back(N); 25 | for (int i = N - 1; i >= 0; i--) { 26 | while (q.size() >= 2 && g(q[0], q[1]) < (double)sumF[i]) 27 | q.pop_front(); 28 | 29 | int j = q.front(); 30 | dp[i] = (dp[j] + (S + sumT[i] - sumT[j]) * sumF[i]); 31 | while (q.size() >= 2 && g(q[q.size() - 2], q[q.size() - 1]) > g(q[q.size() - 1], i)) { 32 | q.pop_back(); 33 | } 34 | q.push_back(i); 35 | } 36 | printf("%d\n", dp[0]); 37 | return 0; 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2008_Linear_Garden.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int n, k; 6 | static long long power(long long n, long long m) { 7 | if (m == 0) 8 | return 1; 9 | if (m == 1) 10 | return n; 11 | if (m % 2 == 0) 12 | return power(n * n % k, m / 2) % k; 13 | return n * power(n * n % k, m / 2) % k; 14 | } 15 | static long long compute(long long min, long long max, long long n, long long curr) { 16 | if (max - min > 2) 17 | return 0; 18 | if (max - min == 2) 19 | return power(2, n / 2) % k; 20 | return (power(2, n / 2) * (n % 2 == 1 ? 3 : 2) - 1) % k; 21 | } 22 | 23 | int main() { 24 | scanf("%d%ld", &n, &k); 25 | char input[n]; 26 | for (int x = 0; x < n; x++) 27 | scanf(" %c", &input[x]); 28 | long long curr = 0, currMin = 0, currMax = 0; 29 | long long sum = 0; 30 | for (int x = 0; x < n; x++) { 31 | if (input[x] == 'P') { 32 | sum += compute(currMin, max(currMax, curr + 1), n - x - 1, curr + 1); 33 | currMin = min(currMin, --curr); 34 | } else { 35 | currMax = max(currMax, ++curr); 36 | } 37 | } 38 | printf("%ld", (sum + 1) % k); 39 | return 0; 40 | } 41 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2010_Cluedo.cc: -------------------------------------------------------------------------------- 1 | #include "grader.h" 2 | #include 3 | 4 | #define mp make_pair 5 | #define pb push_back 6 | #define INF 1 << 30 7 | #define MOD 1000000007 8 | #define rint(x) scanf("%d", &(x)) 9 | #define rlong(x) scanf("%lld", &(x)) 10 | #define SIZE 500100 11 | #define l(x) x << 1 12 | #define r(x) x << 1 | 1 13 | #define m(x, y) (x + y) / 2 14 | 15 | using namespace std; 16 | 17 | typedef long long ll; 18 | typedef pair pi; 19 | typedef pair pll; 20 | 21 | void Solve() { 22 | int r; 23 | int a = 1, b = 1, c = 1; 24 | while ((r = Theory(a, b, c)) != 0) { 25 | if (r == 1) 26 | a++; 27 | else if (r == 2) 28 | b++; 29 | else if (r == 3) 30 | c++; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2010_Hotter_Colder/grader.h: -------------------------------------------------------------------------------- 1 | int Guess(int G); 2 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2010_Hotter_Colder/grader.in: -------------------------------------------------------------------------------- 1 | 5 1 2 | 5 2 3 | 5 3 4 | 5 4 5 | 5 5 6 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2010_Hotter_Colder/hottercolder.h: -------------------------------------------------------------------------------- 1 | int HC(int N); 2 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2010_Memory.cc: -------------------------------------------------------------------------------- 1 | #include "grader.h" 2 | #include 3 | 4 | #define mp make_pair 5 | #define pb push_back 6 | #define INF 1 << 30 7 | #define MOD 1000000007 8 | #define rint(x) scanf("%d", &(x)) 9 | #define rlong(x) scanf("%lld", &(x)) 10 | #define SIZE 50 11 | #define l(x) x << 1 12 | #define r(x) x << 1 | 1 13 | #define m(x, y) (x + y) / 2 14 | 15 | using namespace std; 16 | 17 | typedef long long ll; 18 | typedef pair pi; 19 | typedef pair pll; 20 | 21 | char val[SIZE + 1]; 22 | 23 | void play() { 24 | for (int i = 1; i <= SIZE; i++) 25 | val[i] = faceup(i); 26 | 27 | for (int i = 1; i <= SIZE; i++) 28 | for (int j = i + 1; j <= SIZE; j++) 29 | if (val[i] == val[j]) { 30 | faceup(i); 31 | faceup(j); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2011_Rice_Hub.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | int n, l; 5 | long long b; 6 | long long rice[100005]; 7 | long long sum[100005]; 8 | int main() { 9 | scanf("%d%d%lld", &n, &l, &b); 10 | 11 | sum[0] = 0; 12 | for (int x = 1; x <= n; x++) { 13 | scanf("%lld", &rice[x]); 14 | sum[x] = rice[x] + sum[x - 1]; 15 | } 16 | int lo = 1; 17 | int hi = 1; 18 | int maxFields = 0; 19 | while (hi <= n) { 20 | int median = (hi + lo) / 2; 21 | int leftFields = median - lo + 1; 22 | int rightFields = hi - median; 23 | long long rightCost = sum[hi] - sum[lo + leftFields - 1]; 24 | long long leftCost = sum[leftFields + lo - 1] - sum[lo - 1]; 25 | long long nextCost = 26 | leftFields * rice[median] - leftCost + rightCost - rightFields * rice[median]; 27 | if (nextCost <= b) { 28 | maxFields = max(maxFields, hi - lo + 1); 29 | hi++; 30 | } else { 31 | lo++; 32 | hi++; 33 | } 34 | } 35 | printf("%d", maxFields); 36 | } 37 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2012_Pebbling_Odometer/GRID_FILE.txt: -------------------------------------------------------------------------------- 1 | 128 1 1 2 | 97 10 1 3 | 221 35 1 4 | 95 118 1 5 | 157 141 1 6 | 115 180 1 7 | 40 185 1 8 | 20 229 1 9 | 0 1 1 -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2012_The_Last_Supper/advice.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffrey-xiao/competitive-programming/3db40cc1a500ec3289ed6da8a71f7405b0aa27d2/src/contest/ioi/IOI_2012_The_Last_Supper/advice.txt -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2012_The_Last_Supper/advisor.h: -------------------------------------------------------------------------------- 1 | 2 | /* For the advisor */ 3 | void WriteAdvice(unsigned char a); 4 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2012_The_Last_Supper/assistant.cc: -------------------------------------------------------------------------------- 1 | #include "assistant.h" 2 | #include 3 | 4 | using namespace std; 5 | 6 | void Assist(unsigned char *A, int N, int K, int R) { 7 | set neededColors; 8 | set unneededColors; 9 | 10 | for (int i = 0; i < K; i++) { 11 | if (A[i]) 12 | neededColors.insert(i); 13 | else 14 | unneededColors.insert(i); 15 | } 16 | 17 | for (int i = 0; i < N; i++) { 18 | int colorNeeded = GetRequest(); 19 | if (neededColors.count(colorNeeded)) { 20 | neededColors.erase(colorNeeded); 21 | } else { 22 | PutBack(*unneededColors.begin()); 23 | unneededColors.erase(unneededColors.begin()); 24 | } 25 | if (A[i + K]) 26 | neededColors.insert(colorNeeded); 27 | else 28 | unneededColors.insert(colorNeeded); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2012_The_Last_Supper/assistant.h: -------------------------------------------------------------------------------- 1 | 2 | /* For the player */ 3 | int GetRequest(); 4 | void PutBack(int T); 5 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2012_The_Last_Supper/example.txt: -------------------------------------------------------------------------------- 1 | 4 2 65000 2 | 2 0 3 0 3 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2014_Square.java: -------------------------------------------------------------------------------- 1 | package contest.ioi; 2 | 3 | import java.util.Scanner; 4 | 5 | public class IOI_2014_Square { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int size = scan.nextInt(); 10 | int[][] grid = new int[size + 1][size + 1]; 11 | for (int x = 1; x < size + 1; x++) 12 | for (int y = 1; y < size + 1; y++) 13 | grid[x][y] = scan.nextInt(); 14 | int[][] table = new int[size + 1][size + 1]; 15 | int max = 0; 16 | int num = 1; 17 | for (int x = 1; x < size + 1; x++) { 18 | for (int y = 1; y < size + 1; y++) { 19 | if (grid[x][y] == 1) 20 | table[x][y] = Math.min(Math.min(table[x][y - 1], table[x - 1][y]), table[x - 1][y - 1]) + 1; 21 | if (table[x][y] > max) { 22 | max = table[x][y]; 23 | num = 1; 24 | } else if (table[x][y] == max) 25 | num++; 26 | } 27 | } 28 | System.out.println(max * num); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2014_Station.java: -------------------------------------------------------------------------------- 1 | package contest.ioi; 2 | 3 | import java.util.Scanner; 4 | 5 | public class IOI_2014_Station { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int numOfStations = scan.nextInt(); 10 | int maxDistance = scan.nextInt(); 11 | int stations[] = new int[numOfStations + 1]; 12 | int[] days = new int[numOfStations + 1]; 13 | for (int x = 1; x < stations.length; x++) { 14 | stations[x] = scan.nextInt(); 15 | if (x > 1) 16 | days[x] = -1; 17 | } 18 | 19 | main: 20 | for (int x = 1; x < days.length; x++) { 21 | for (int y = Math.min(days.length - 1, x + maxDistance); y > x; y--) { 22 | if (days[x] != -1 && stations[y] == 1) { 23 | if (days[y] == -1) { 24 | days[y] = days[x] + 1; 25 | x = y - 1; 26 | continue main; 27 | } else { 28 | days[y] = Math.min(days[y], days[x] + 1); 29 | x = y - 1; 30 | continue main; 31 | } 32 | } 33 | } 34 | } 35 | System.out.println(days[days.length - 1]); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2015_Boxes.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define SIZE 10000002 6 | 7 | typedef long long ll; 8 | 9 | ll dp1[SIZE], dp2[SIZE]; 10 | 11 | ll delivery(int N, int K, int L, int positions[]) { 12 | for (int i = 1; i <= N; i++) { 13 | if (i >= K) 14 | dp1[i] = dp1[i - K] + min(2 * positions[i - 1], L); 15 | else 16 | dp1[i] = min(2 * positions[i - 1], L); 17 | } 18 | for (int i = N; i >= 1; i--) { 19 | if (i + K <= N) 20 | dp2[i] = dp2[i + K] + min(2 * (L - positions[i - 1]), L); 21 | else 22 | dp2[i] = min(2 * (L - positions[i - 1]), L); 23 | } 24 | 25 | ll ans = 1ll << 60; 26 | for (int i = 0; i <= N; i++) 27 | ans = min(ans, dp1[i] + dp2[i + 1]); 28 | 29 | return ans; 30 | } 31 | 32 | int main() { 33 | int N, K, L; 34 | scanf("%d%d%d", &N, &K, &L); 35 | int positions[N]; 36 | for (int i = 0; i < N; i++) 37 | scanf("%d", &positions[i]); 38 | 39 | printf("%lld\n", delivery(N, K, L, positions)); 40 | return 0; 41 | } 42 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2016_Scales/grader.cc: -------------------------------------------------------------------------------- 1 | 2 | #include "scales.cpp" 3 | 4 | int main() { 5 | 6 | int T, i; 7 | 8 | T = _getNumberOfTests(); 9 | init(T); 10 | 11 | for (i = 1; i <= T; i++) { 12 | _initNewTest(); 13 | orderCoins(); 14 | } 15 | 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2016_Scales/scales.h: -------------------------------------------------------------------------------- 1 | #ifndef __SCALES_H__ 2 | #define __SCALES_H__ 3 | 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | void init(int T); 9 | void orderCoins(); 10 | void answer(int W[]); 11 | 12 | int getMedian(int A, int B, int C); 13 | int getHeaviest(int A, int B, int C); 14 | int getLightest(int A, int B, int C); 15 | int getNextLightest(int A, int B, int C, int D); 16 | 17 | #ifdef __cplusplus 18 | } 19 | #endif 20 | 21 | #endif /* __SCALES_H__ */ -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2016_Scales/scales.in: -------------------------------------------------------------------------------- 1 | 18 2 | 4 3 1 5 2 6 3 | 3 6 5 2 4 1 4 | 5 4 3 6 2 1 5 | 4 1 6 2 5 3 6 | 2 4 3 5 6 1 7 | 4 5 6 3 1 2 8 | 2 4 3 1 6 5 9 | 5 4 6 2 3 1 10 | 3 2 1 6 5 4 11 | 1 2 4 5 3 6 12 | 5 2 4 6 3 1 13 | 5 3 4 6 2 1 14 | 3 4 1 2 6 5 15 | 6 3 5 4 2 1 16 | 5 3 2 1 4 6 17 | 5 1 6 4 2 3 18 | 3 5 6 2 4 1 19 | 5 1 6 3 2 4 20 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2016_Scales/scales.out: -------------------------------------------------------------------------------- 1 | 4 3 1 5 2 6 2 | 6 3 | 3 6 5 2 4 1 4 | 6 5 | 5 4 3 6 2 1 6 | 6 7 | 4 1 6 2 5 3 8 | 6 9 | 2 4 3 5 6 1 10 | 6 11 | 4 5 6 3 1 2 12 | 6 13 | 2 4 3 1 6 5 14 | 6 15 | 5 4 6 2 3 1 16 | 6 17 | 3 2 1 6 5 4 18 | 6 19 | 1 2 4 5 3 6 20 | 6 21 | 5 2 4 6 3 1 22 | 6 23 | 5 3 4 6 2 1 24 | 6 25 | 3 4 1 2 6 5 26 | 6 27 | 6 3 5 4 2 1 28 | 6 29 | 5 3 2 1 4 6 30 | 6 31 | 5 1 6 4 2 3 32 | 6 33 | 3 5 6 2 4 1 34 | 6 35 | 5 1 6 3 2 4 36 | 6 37 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2016_Towns/graderlib.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | static int _N; 5 | static int _dist[110][110]; 6 | static int _quota, _user_query; 7 | 8 | void _ini_query(int N, int k) { 9 | int ret; 10 | _N = N; 11 | for (int i = 0; i < _N; i++) 12 | for (int j = 0; j < _N; j++) { 13 | ret = scanf("%d", &_dist[i][j]); 14 | assert(ret == 1); 15 | } 16 | if (k == 1 || k == 3) _quota = _N * (_N - 1) / 2; 17 | else if (k == 2 || k == 4 || k == 6) _quota = (7 * _N + 1) / 2; 18 | else _quota = 5 * _N; 19 | _user_query = 0; 20 | } 21 | 22 | 23 | int getDistance(int i, int j) { 24 | _user_query++; 25 | if (_user_query > _quota) { 26 | printf("0\n"); 27 | exit(0); 28 | } 29 | if (i < 0 || i >= _N) return 0; 30 | if (j < 0 || j >= _N) return 0; 31 | return _dist[i][j]; 32 | } 33 | 34 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2016_Towns/towns.h: -------------------------------------------------------------------------------- 1 | #ifndef towns_h 2 | #define towns_h 3 | 4 | int getDistance(int i, int j); 5 | int hubDistance(int N, int sub); 6 | 7 | #endif 8 | -------------------------------------------------------------------------------- /src/contest/ioi/IOI_2016_Towns/towns.out: -------------------------------------------------------------------------------- 1 | 12 2 | 11 3 | 12 4 | 14 5 | 14 6 | 430 7 | 431 8 | 348 9 | 394 10 | 352 11 | 338 12 | 405 13 | 497 14 | 509 15 | 568 16 | 553 17 | 773 18 | 14 19 | 14 20 | 14 21 | -------------------------------------------------------------------------------- /src/contest/misc/A_Game.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | class A_Game { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int[] coins = new int[scan.nextInt()]; 10 | for (int x = 0; x < coins.length; x++) 11 | coins[x] = scan.nextInt(); 12 | 13 | int[][] table = new int[coins.length][coins.length]; 14 | 15 | for (int x = table.length; x >= 0; x--) { 16 | for (int y = 0, z = table.length - x; y < x; y++, z++) { 17 | int i = y + 1 > z - 1 ? 0 : table[y + 1][z - 1]; 18 | int j = y + 2 > z ? 0 : table[y + 2][z]; 19 | int k = z - 2 < y ? 0 : table[y][z - 2]; 20 | table[y][z] = max(coins[y] + min(i, j), coins[z] + min(i, k)); 21 | } 22 | } 23 | System.out.print(table[0][coins.length - 1] + " "); 24 | System.out.println(Math.min(table[1][coins.length - 1], table[0][coins.length - 2])); 25 | } 26 | 27 | static int max(int a, int b) { 28 | return a > b ? a : b; 29 | } 30 | 31 | static int min(int a, int b) { 32 | return a < b ? a : b; 33 | } 34 | } -------------------------------------------------------------------------------- /src/contest/misc/Adding_Reversed_Numbers.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Adding_Reversed_Numbers { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int x = scan.nextInt(); x > 0; x--) { 10 | System.out.println(reverse(reverse(scan.nextInt()) + reverse(scan.nextInt()))); 11 | } 12 | } 13 | 14 | public static int reverse(int i) { 15 | return Integer.parseInt(new StringBuilder(Integer.toString(i)).reverse().toString()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/contest/misc/Aplusb.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.StringTokenizer; 7 | 8 | public class Aplusb { 9 | 10 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | static StringTokenizer st; 12 | 13 | public static void main(String[] args) throws IOException { 14 | System.out.println(readInt() + readInt()); 15 | } 16 | 17 | static String next() throws IOException { 18 | while (st == null || !st.hasMoreTokens()) 19 | st = new StringTokenizer(br.readLine().trim()); 20 | return st.nextToken(); 21 | } 22 | 23 | static long readLong() throws IOException { 24 | return Long.parseLong(next()); 25 | } 26 | 27 | static int readInt() throws IOException { 28 | return Integer.parseInt(next()); 29 | } 30 | 31 | static double readDouble() throws IOException { 32 | return Double.parseDouble(next()); 33 | } 34 | 35 | static String readLine() throws IOException { 36 | return br.readLine().trim(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/misc/BOI_2009_Boxen.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define N 100010 6 | 7 | vector> adj(N); 8 | vector> rev(N); 9 | bool v[N]; 10 | int n; 11 | void dfs(int i) { 12 | v[i] = true; 13 | for (int x = 0; x < rev[i].size(); x++) { 14 | if (!v[rev[i][x]]) { 15 | dfs(rev[i][x]); 16 | } 17 | break; 18 | } 19 | for (int x = 0; x < adj[i].size(); x++) 20 | if (!v[adj[i][x]]) 21 | dfs(adj[i][x]); 22 | } 23 | 24 | int main() { 25 | for (int t = 0; t < 2; t++) { 26 | scanf("%d", &n); 27 | memset(v, 0, sizeof(v)); 28 | for (int x = 0; x < n; x++) { 29 | int a; 30 | scanf("%d", &a); 31 | a--; 32 | if (a == x) 33 | continue; 34 | adj[a].push_back(x); 35 | adj[x].push_back(a); 36 | } 37 | 38 | int count = 0; 39 | for (int x = 0; x < n; x++) { 40 | if (!v[x]) { 41 | dfs(x); 42 | count++; 43 | } 44 | } 45 | printf("%d ", count); 46 | for (int x = 0; x < n; x++) { 47 | adj[x].clear(); 48 | rev[x].clear(); 49 | } 50 | } 51 | return 0; 52 | } 53 | -------------------------------------------------------------------------------- /src/contest/misc/BOI_2009_Diamonds.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | int grid[101][101][101]; 5 | int main() { 6 | int L, M, N; 7 | scanf("%d%d%d", &L, &M, &N); 8 | 9 | for (int x = 1; x <= N; x++) { 10 | for (int y = 1; y <= M; y++) { 11 | for (int z = 1; z <= L; z++) { 12 | int d; 13 | scanf("%d", &d); 14 | grid[x][y][z] = d + grid[x - 1][y][z] + grid[x][y - 1][z] + grid[x][y][z - 1] - 15 | grid[x - 1][y - 1][z] - grid[x - 1][y][z - 1] - grid[x][y - 1][z - 1] + 16 | grid[x - 1][y - 1][z - 1]; 17 | } 18 | } 19 | } 20 | for (int x = 0;; x++) { 21 | int z1 = -1, y1, x1, z2, y2, x2; 22 | scanf("%d%d%d%d%d%d", &z1, &y1, &x1, &z2, &y2, &x2); 23 | if (z1 < 0) 24 | break; 25 | int sum = grid[x2][y2][z2] - grid[x1][y2][z2] - grid[x2][y1][z2] - grid[x2][y2][z1] + 26 | grid[x1][y1][z2] + grid[x2][y1][z1] + grid[x1][y2][z1] - grid[x1][y1][z1]; 27 | printf("%d\n", sum); 28 | } 29 | return 0; 30 | } -------------------------------------------------------------------------------- /src/contest/misc/BOI_2009_Frog_Mutants.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define N 1000005 6 | 7 | int h[N], j[N]; 8 | vector heights; 9 | int n; 10 | int main() { 11 | scanf("%d", &n); 12 | for (int x = 0; x < n; x++) 13 | scanf("%d", &h[x]); 14 | for (int x = 0; x < n; x++) 15 | scanf("%d", &j[x]); 16 | int size = 0; 17 | for (int x = n - 1; x >= 0; x--) { 18 | while (size != 0 && h[x] >= heights[size - 1]) 19 | heights.pop_back(), size--; 20 | if (size == 0 || size - j[x] < 0) 21 | j[x] = -1; 22 | else 23 | j[x] = heights[size - j[x]]; 24 | heights.push_back(h[x]), size++; 25 | } 26 | for (int x = 0; x < n; x++) 27 | printf("%d ", j[x]); 28 | return 0; 29 | } 30 | -------------------------------------------------------------------------------- /src/contest/misc/Battleships.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Battleships { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int r = scan.nextInt(); 10 | int c = scan.nextInt(); 11 | int n = scan.nextInt(); 12 | long sum = 0; 13 | if (n > r || n > c) { 14 | System.out.println(0); 15 | return; 16 | } 17 | double d = (r + 1 - n) * (c + 1 - n); 18 | for (int x = 0; x < r; x++) { 19 | String s = scan.next(); 20 | for (int y = 0; y < c; y++) { 21 | if (s.charAt(y) == 'X') { 22 | int a1 = Math.min(x, n - 1); 23 | int a2 = Math.min(r - 1 - x, n - 1); 24 | int b1 = Math.min(y, n - 1); 25 | int b2 = Math.min(c - 1 - y, n - 1); 26 | sum += ((((a1 + a2 + 1)) - n + 1) * (((b1 + b2 + 1) - n + 1))); 27 | } 28 | } 29 | } 30 | System.out.println(sum / d); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/contest/misc/Betty_Candy_Canes.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Betty_Candy_Canes { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int[][] grid = {{25, 24, 23, 22, 21, 20, 19, 18, 17, -1}, {24, 23, 22, -1, 20, 19, 18, -1, 16, 17}, {25, -1, 21, 20, 19, 18, 17, 16, 15, 16}, {24, 23, 22, 21, 20, 19, 18, -1, 14, 15}, {-1, -1, -1, -1, -1, -1, -1, 12, 13, 14}, {6, 5, 6, 7, 8, 9, 10, 11, 12, 13}, {-1, 4, 5, 6, 7, 8, 9, 10, 11, 12}, {2, 3, -1, 5, 6, 7, 8, 9, -1, 11}, {1, 2, 3, 4, 5, 6, 7, -1, 9, 10}, {-1, 1, 2, 3, 4, 5, 6, 7, 8, -1}}; 10 | int x = scan.nextInt(); 11 | int y = scan.nextInt(); 12 | System.out.printf("Betty will sweat %dmL to get to her candy cane", grid[10 - y][x - 1]); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/contest/misc/Chocolate_Bar.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Chocolate_Bar { 6 | static Scanner c = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int num = c.nextInt(); 10 | for (; num > 0; num--) { 11 | System.out.println(c.nextInt() * c.nextInt() - 1); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/contest/misc/Coins.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | using namespace std; 5 | 6 | int n, m; 7 | bool can[100001]; 8 | int cnt[100001]; 9 | int val[100]; 10 | int num[100]; 11 | 12 | int main() { 13 | scanf("%d%d", &n, &m); 14 | while (n != 0 && m != 0) { 15 | 16 | for (int i = 0; i < n; i++) 17 | scanf("%d", &val[i]); 18 | for (int i = 0; i < n; i++) 19 | scanf("%d", &num[i]); 20 | memset(can, false, sizeof can); 21 | can[0] = true; 22 | for (int i = 0; i < n; i++) { 23 | memset(cnt, 0, sizeof cnt); 24 | for (int j = 0; j <= m; j++) { 25 | if (can[j] && cnt[j] < num[i] && j + val[i] <= m && !can[j + val[i]]) { 26 | can[j + val[i]] = true; 27 | cnt[j + val[i]] = cnt[j] + 1; 28 | } 29 | } 30 | } 31 | int ans = 0; 32 | for (int i = 1; i <= m; i++) 33 | if (can[i]) 34 | ans++; 35 | printf("%d\n", ans); 36 | scanf("%d%d", &n, &m); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/misc/Cyclopian_Puzzle.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | static void solve(int n, char start, char temp, char dest) { 5 | if (n == 0) 6 | return; 7 | solve(n - 1, start, dest, temp); 8 | printf("%c%c\n", start, dest); 9 | solve(n - 1, temp, start, dest); 10 | } 11 | int main() { 12 | int n; 13 | scanf("%d", &n); 14 | solve(n, 'A', 'B', 'C'); 15 | return 0; 16 | } 17 | -------------------------------------------------------------------------------- /src/contest/misc/Cyclopian_Puzzle.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | 7 | public class Cyclopian_Puzzle { 8 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | 10 | public static void main(String[] args) throws NumberFormatException, IOException { 11 | solve(Integer.parseInt(br.readLine()), 'A', 'B', 'C'); 12 | } 13 | 14 | public static void solve(int n, char origin, char temp, char dest) { 15 | if (n == 0) 16 | return; 17 | 18 | solve(n - 1, origin, dest, temp); 19 | System.out.println(origin + "" + dest); 20 | solve(n - 1, temp, origin, dest); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/contest/misc/Distinct_Prime_Factors.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | bool primes[1000001]; 6 | int nums[1000001]; 7 | 8 | int main() { 9 | int a, b; 10 | scanf("%d%d", &a, &b); 11 | primes[1] = true; 12 | for (int x = 2; x < b + 1; x++) { 13 | if (!primes[x]) { 14 | for (int y = x; y < b + 1 && y >= 0; y += x) { 15 | primes[y] = true; 16 | nums[y]++; 17 | } 18 | } 19 | if (x >= a && x <= b) 20 | printf("%d\n", nums[x] == 0 ? nums[x] + 1 : nums[x]); 21 | } 22 | return 0; 23 | } 24 | -------------------------------------------------------------------------------- /src/contest/misc/Encryption_Grid.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Encryption_Grid { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int columns = scan.nextInt(); 10 | while (columns != 0) { 11 | String s = scan.next(); 12 | int counter = 0; 13 | char[][] grid = new char[(int)Math.ceil(s.length() / 1.0 / columns)][columns]; 14 | for (int x = 0; x < grid.length; x++) { 15 | if (x % 2 == 0) { 16 | for (int y = 0; y < grid[0].length; y++) { 17 | grid[x][y] = s.charAt(counter); 18 | counter++; 19 | } 20 | } else { 21 | for (int y = grid[0].length - 1; y >= 0; y--) { 22 | grid[x][y] = s.charAt(counter); 23 | counter++; 24 | } 25 | } 26 | } 27 | for (int x = 0; x < grid[0].length; x++) { 28 | for (int y = 0; y < grid.length; y++) { 29 | System.out.print(grid[y][x]); 30 | } 31 | } 32 | System.out.println(); 33 | columns = scan.nextInt(); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/contest/misc/Factorial_Sum_List.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.HashSet; 4 | import java.util.Scanner; 5 | 6 | public class Factorial_Sum_List { 7 | static Scanner scan = new Scanner(System.in); 8 | static int[] f = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880}; 9 | 10 | public static void main(String[] args) { 11 | String s = scan.next(); 12 | while (!s.equals("0")) { 13 | int size = 0; 14 | HashSet hs = new HashSet(); 15 | hs.add(Integer.parseInt(s)); 16 | while (size != hs.size()) { 17 | 18 | int sum = 0; 19 | for (int x = 0; x < s.length(); x++) { 20 | sum += f[s.charAt(x) - 48]; 21 | } 22 | size = hs.size(); 23 | hs.add(sum); 24 | s = "" + sum; 25 | } 26 | System.out.println(hs.size() + 1); 27 | s = scan.next(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/contest/misc/Good_Predictions.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.math.BigInteger; 4 | import java.util.Scanner; 5 | 6 | public class Good_Predictions { 7 | public static void main(String[] args) { 8 | Scanner scan = new Scanner(System.in); 9 | int n1 = scan.nextInt(); 10 | int n2 = scan.nextInt(); 11 | int n3 = scan.nextInt(); 12 | int n4 = scan.nextInt(); 13 | 14 | BigInteger a = BigInteger.valueOf(1); 15 | for (int i = 2; i <= n1; i++) 16 | a = a.multiply(BigInteger.valueOf(i)); 17 | 18 | for (int i = 2; i <= n2; i++) 19 | a = a.divide(BigInteger.valueOf(i)); 20 | for (int i = 2; i <= n3; i++) 21 | a = a.divide(BigInteger.valueOf(i)); 22 | for (int i = 2; i <= n4; i++) 23 | a = a.divide(BigInteger.valueOf(i)); 24 | System.out.println(a.mod(new BigInteger("1000000007"))); 25 | scan.close(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/contest/misc/JOI_2014_Secret.cc: -------------------------------------------------------------------------------- 1 | #include "secret.h" 2 | #include 3 | 4 | using namespace std; 5 | 6 | int seg[1001][1001]; 7 | 8 | void compute(int l, int r) { 9 | if (r - l <= 1) 10 | return; 11 | int m = (l + r) / 2; 12 | for (int i = m - 1; i >= l; i--) 13 | if (seg[i][m] == -1) 14 | seg[i][m] = Secret(seg[i][i + 1], seg[i + 1][m]); 15 | 16 | for (int i = m + 1; i <= r; i++) 17 | if (seg[m][i] == -1) 18 | seg[m][i] = Secret(seg[m][i - 1], seg[i - 1][i]); 19 | compute(l, m); 20 | compute(m, r); 21 | } 22 | 23 | void Init(int N, int A[]) { 24 | for (int i = 0; i <= N; i++) 25 | for (int j = 0; j <= N; j++) 26 | seg[i][j] = -1; 27 | for (int i = 0; i < N; i++) 28 | seg[i][i + 1] = A[i]; 29 | compute(0, N); 30 | } 31 | 32 | int Query(int L, int R) { 33 | for (int i = L + 1; i <= R; i++) 34 | if (seg[L][i] != -1 && seg[i][R + 1] != -1) 35 | return Secret(seg[L][i], seg[i][R + 1]); 36 | return seg[L][R + 1]; 37 | } 38 | -------------------------------------------------------------------------------- /src/contest/misc/MaximumSum.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | class MaximumSum { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int length = scan.nextInt(); 10 | int[] nums = new int[length]; 11 | for (int x = 0; x < length; x++) 12 | nums[x] = scan.nextInt(); 13 | int[] table = new int[length]; 14 | table[0] = nums[0]; 15 | for (int x = 1; x < table.length; x++) { 16 | int a = x - 2 >= 0 ? table[x - 2] + nums[x] : nums[x]; 17 | int b = x - 1 >= 0 ? table[x - 1] : 0; 18 | table[x] = max(a, b); 19 | } 20 | System.out.println(table[length - 1]); 21 | } 22 | 23 | public static int max(int a, int b) { 24 | return a > b ? a : b; 25 | } 26 | } -------------------------------------------------------------------------------- /src/contest/misc/Non_space_separated.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.math.BigInteger; 4 | import java.util.Map; 5 | import java.util.Scanner; 6 | import java.util.TreeMap; 7 | 8 | public class Non_space_separated { 9 | static Scanner scan = new Scanner(System.in); 10 | static TreeMap m = new TreeMap(); 11 | 12 | public static void main(String[] args) { 13 | String s = scan.next(); 14 | getSums(s, new BigInteger("0")); 15 | int max = 0; 16 | String key = ""; 17 | for (Map.Entry entry : m.entrySet()) { 18 | if (entry.getValue() > max) { 19 | key = entry.getKey().toString(); 20 | max = entry.getValue(); 21 | } 22 | } 23 | System.out.printf("%d%s", m.size(), key); 24 | } 25 | 26 | private static void getSums(String s, BigInteger i) { 27 | if (s.length() == 0) { 28 | if (m.get(i) == null) 29 | m.put(i, 1); 30 | else 31 | m.put(i, m.get(i) + 1); 32 | } 33 | for (int x = 0; x < s.length(); x++) { 34 | BigInteger curr = new BigInteger(s.substring(0, x + 1)); 35 | getSums(s.substring(x + 1, s.length()), i.add(curr)); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/contest/misc/Presents.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class Presents { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | long[] children = new long[scan.nextInt()]; 11 | for (int x = 0; x < children.length; x++) 12 | children[x] = scan.nextLong(); 13 | long[] present = new long[scan.nextInt()]; 14 | for (int x = 0; x < present.length; x++) 15 | present[x] = scan.nextLong(); 16 | Arrays.sort(children); 17 | Arrays.sort(present); 18 | long sum = 0; 19 | int indexC = children.length - 1; 20 | int indexP = present.length - 1; 21 | while (indexC != -1 && indexP != -1) { 22 | if (present[indexP] <= children[indexC]) { 23 | sum += (children[indexC] - present[indexP]); 24 | indexC--; 25 | indexP--; 26 | } else { 27 | indexP--; 28 | } 29 | } 30 | System.out.println(indexC == -1 ? sum : -1); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/contest/misc/Primes.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Primes { 6 | public static void main(String[] args) { 7 | Scanner scan = new Scanner(System.in); 8 | int end = 542; // where you want to end 9 | int num = scan.nextInt(); // first how many primes 10 | boolean[] primes = new boolean[end]; 11 | primes[0] = true; 12 | for (int x = 1; x < primes.length; x += 2) 13 | if (x + 1 % 2 == 0) 14 | primes[x] = true; 15 | for (int x = 1; x * x < primes.length; x++) 16 | if (primes[x] == false) 17 | for (int y = (x + 1) * (x + 1) - 1; y < primes.length; y += (x + 1)) 18 | primes[y] = true; 19 | // printing 20 | int count = 0; 21 | for (int x = 1; x <= end && count < num; x++) { 22 | if (!primes[x - 1]) { 23 | System.out.println(x); 24 | count++; 25 | } 26 | } 27 | scan.close(); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/contest/misc/Primes_3.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.math.BigInteger; 4 | import java.util.Scanner; 5 | 6 | public class Primes_3 { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | for (int x = scan.nextInt(); x > 0; x--) { 11 | long n = scan.nextLong(); 12 | System.out.println(isPrime(n, 100) ? "PRIME" : "NOT"); 13 | } 14 | } 15 | 16 | public static boolean isPrime(long n, int k) { 17 | while (k > 0) { 18 | long x = (long)(Math.random() * (n - 2) + 1); 19 | BigInteger b = new BigInteger(Long.toString(x)).modPow(new BigInteger(Long.toString(n - 1)), new BigInteger(Long.toString(n))); 20 | if (!b.toString().equals("1")) 21 | return false; 22 | k--; 23 | } 24 | return true; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/contest/misc/Shortest_Path_Adjacency.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Shortest_Path_Adjacency { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int size = scan.nextInt(); 10 | int[][] table = new int[size][size]; 11 | for (int x = 0; x < size; x++) { 12 | for (int y = 0; y < size; y++) { 13 | table[x][y] = scan.nextInt(); 14 | } 15 | } 16 | for (int z = 0; z < size; z++) { 17 | for (int x = 0; x < size; x++) { 18 | for (int y = 0; y < size; y++) { 19 | if (x != z && y != 0 && table[z][y] != 0 && table[x][z] != 0) { 20 | table[x][y] = Math.min(table[x][y] == 0 ? Integer.MAX_VALUE : table[x][y], table[z][y] + table[x][z]); 21 | } 22 | } 23 | } 24 | } 25 | System.out.println(table[0][size - 1]); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/contest/misc/Sorting.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class Sorting { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int[] nums = new int[scan.nextInt()]; 11 | for (int x = 0; x < nums.length; x++) 12 | nums[x] = scan.nextInt(); 13 | Arrays.sort(nums); 14 | for (int x : nums) 15 | System.out.println(x); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/contest/misc/Triple_Fat_Ladies.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Triple_Fat_Ladies { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int n = scan.nextInt(); n > 0; n--) { 10 | int x = scan.nextInt(); 11 | int a = 0; 12 | for (a = 19; 10 * a + 2 <= x; a += 25) 13 | ; 14 | System.out.println(10 * a + 2); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/contest/misc/threenplus1.java: -------------------------------------------------------------------------------- 1 | package contest.misc; 2 | 3 | import java.util.Scanner; 4 | 5 | public class threenplus1 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int n = scan.nextInt(); 10 | int num = 0; 11 | while (n != 1) { 12 | if (n % 2 == 1) { 13 | n = n * 3 + 1; 14 | num++; 15 | } else { 16 | n /= 2; 17 | num++; 18 | } 19 | } 20 | System.out.println(num); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/contest/noi/NOI_2000_Ceramic_Necklace.java: -------------------------------------------------------------------------------- 1 | package contest.noi; 2 | 3 | import java.util.Scanner; 4 | 5 | public class NOI_2000_Ceramic_Necklace { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int v = scan.nextInt(); 10 | int v0 = scan.nextInt(); 11 | int max = 0; 12 | int n = 1; 13 | while (v * n - v0 * n * n >= max) { 14 | if (max == v * n - v0 * n * n) { 15 | System.out.println(0); 16 | return; 17 | } 18 | max = v * n - v0 * n * n; 19 | n++; 20 | } 21 | System.out.println(n - 1); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/contest/poj/POJ_1019.cc: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | using namespace std; 5 | 6 | long long dp[33000]; 7 | int len(int i) { 8 | int cnt = 0; 9 | while (i != 0) { 10 | i /= 10; 11 | cnt++; 12 | } 13 | return cnt; 14 | } 15 | int digit(int cnt, int k) { 16 | for (int i = 0; i < cnt; i++) 17 | k /= 10; 18 | return k % 10; 19 | } 20 | int main() { 21 | int t; 22 | scanf("%d", &t); 23 | int i; 24 | for (i = 1; dp[i] <= 1ll << 31; i++) { 25 | dp[i + 1] = 2 * dp[i] - dp[i - 1] + len(i); 26 | } 27 | for (int i = 0; i < t; i++) { 28 | int n; 29 | scanf("%d", &n); 30 | int j = 1; 31 | while (dp[j + 1] < n) { 32 | j++; 33 | } 34 | j--; 35 | int sz = 0; 36 | for (int k = 1;; k++) { 37 | sz += len(k); 38 | if (sz >= n - dp[j + 1]) { 39 | printf("%d\n", digit(sz - (n - dp[j + 1]), k)); 40 | break; 41 | } 42 | } 43 | } 44 | return 0; 45 | } 46 | -------------------------------------------------------------------------------- /src/contest/smac/SMAC_2008_Infinite_Degrees.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | #define SIZE 100000 5 | int out[SIZE], label[SIZE], start[SIZE]; 6 | bool v[SIZE]; 7 | int n, m; 8 | void dfs(int i) { 9 | v[i] = true; 10 | int j = out[i]; 11 | if (v[j]) { 12 | if (label[j] == -1) 13 | label[i] = j; 14 | else 15 | label[i] = -2; 16 | } else { 17 | dfs(j); 18 | if (label[j] != -1 && j != label[j]) 19 | label[i] = label[j]; 20 | else 21 | label[i] = -2; 22 | } 23 | if (label[i] == -2) 24 | start[i] = start[j]; 25 | else 26 | start[i] = i; 27 | } 28 | int main() { 29 | scanf("%d%d", &n, &m); 30 | for (int i = 0; i < n; i++) { 31 | label[i] = -1; 32 | scanf("%d", &out[i]); 33 | } 34 | for (int i = 0; i < n; i++) 35 | if (!v[i]) 36 | dfs(i); 37 | for (int i = 0; i < m; i++) { 38 | int a, b; 39 | scanf("%d%d", &a, &b); 40 | if (start[a] == start[b]) 41 | printf("1\n"); 42 | else if (label[start[a]] == label[start[b]]) 43 | printf("2\n"); 44 | else 45 | printf("0\n"); 46 | } 47 | } -------------------------------------------------------------------------------- /src/contest/smac/SMAC_2008_Intelligent_Stats.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define SIZE 200000 6 | map toIndex; 7 | map toName; 8 | 9 | int c, n; 10 | int total; 11 | bool v[SIZE]; 12 | vector> adj(SIZE); 13 | void dfs(int x) { 14 | total++; 15 | v[x] = true; 16 | for (int i = 0; i < adj[x].size(); i++) { 17 | if (!v[adj[x][i]]) 18 | dfs(adj[x][i]); 19 | } 20 | } 21 | int main() { 22 | scanf("%d", &n); 23 | for (int x = 0; x < n; x++) { 24 | string a; 25 | string b; 26 | cin >> a >> b; 27 | if (!toIndex.count(a)) { 28 | toIndex[a] = c; 29 | toName[c++] = a; 30 | } 31 | if (!toIndex.count(b)) { 32 | toIndex[b] = c; 33 | toName[c++] = b; 34 | } 35 | int i = toIndex[a]; 36 | int j = toIndex[b]; 37 | adj[i].push_back(j); 38 | } 39 | printf("%d\n", c); 40 | for (int x = 0; x < c; x++) { 41 | memset(v, false, sizeof(v)); 42 | total = -1; 43 | dfs(x); 44 | string s = toName[x]; 45 | cout << s << " " << total << endl; 46 | } 47 | return 0; 48 | } 49 | -------------------------------------------------------------------------------- /src/contest/smac/SMAC_2008_Stock_Market_II.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define SIZE 1000001 6 | typedef long long ll; 7 | int n, m; 8 | ll price[SIZE + 1]; 9 | // BUY IS EQUAL TO BUYING THE CURRENT STOCK, ELSE IT IS EQUAL TO SELLING THE PREV STOCK 10 | int main() { 11 | freopen("in.txt", "r", stdin); 12 | scanf("%d%d", &n, &m); 13 | for (int i = 1; i <= n; i++) { 14 | double in; 15 | cin >> in; 16 | price[i] = (ll)(in * 1000); 17 | } 18 | ll bestBuy = 0; 19 | ll bestSell = 0; 20 | for (int i = n; i >= 1; i--) { 21 | bestBuy = max(bestBuy, bestSell - price[i]); 22 | bestSell = max(bestSell, bestBuy + price[i] - 2 * m); 23 | } 24 | printf("%lld", bestBuy); 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /src/contest/smac/SMAC_2008_The_Factor_Game.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 500100 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int n; 21 | 22 | int main() { 23 | // freopen("in.txt", "r", stdin); 24 | // freopen("out.txt", "w", stdout); 25 | 26 | rint(n); 27 | while (n != 1) { 28 | vector primes; 29 | int newN = n; 30 | int cnt = 2; 31 | while (newN != 1) { 32 | if (cnt * cnt > newN) { 33 | primes.pb(newN); 34 | newN = 1; 35 | } else if (newN % cnt == 0) { 36 | newN /= cnt; 37 | primes.pb(cnt); 38 | } else 39 | cnt++; 40 | } 41 | int num = 1; 42 | for (int x = 0; x < primes.size() / 2; x++) 43 | num *= primes[x]; 44 | printf("%d %d\n", num, n / num); 45 | fflush(NULL); 46 | rint(n); 47 | } 48 | 49 | return 0; 50 | } 51 | -------------------------------------------------------------------------------- /src/contest/usaco/Revenge_Of_The_Clocks.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int main() { 6 | int start[9]; 7 | int moves[9]; 8 | memset(moves, 0, sizeof moves); 9 | for (int i = 0; i < 9; i++) 10 | scanf("%d", &start[i]); 11 | int states[9][9] = {{7, 3, 7, 3, 7, 2, 7, 2, 8}, {10, 7, 10, 7, 10, 7, 9, 8, 9}, 12 | {7, 3, 7, 2, 7, 3, 8, 2, 7}, {10, 7, 9, 7, 10, 8, 10, 7, 9}, {10, 7, 10, 7, 9, 7, 10, 7, 10}, 13 | {9, 7, 10, 8, 10, 7, 9, 7, 10}, {7, 2, 8, 3, 7, 2, 7, 3, 7}, {9, 8, 9, 7, 10, 7, 10, 7, 10}, 14 | {8, 2, 7, 2, 7, 3, 7, 3, 7}}; 15 | for (int i = 0; i < 9; i++) { 16 | int shift = (12 - start[i]) % 12; 17 | for (int j = 0; j < 9; j++) { 18 | moves[j] += states[i][j] * shift; 19 | } 20 | } 21 | for (int i = 0; i < 9; i++) { 22 | moves[i] %= 12; 23 | printf("%d\n", moves[i]); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2011_Awkward_Digits.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Scanner; 4 | 5 | public class USACO_2011_Awkward_Digits { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | StringBuilder n1 = new StringBuilder(scan.nextLine()); 10 | StringBuilder n2 = new StringBuilder(scan.nextLine()); 11 | for (int x = 0; x < n1.length(); x++) { 12 | for (int y = 0; y < n2.length(); y++) { 13 | for (int z = 1; z <= 2; z++) { 14 | int a1 = (n1.charAt(x) + 1 - '0') % 2 + '0'; 15 | n1.setCharAt(x, (char)a1); 16 | int a2 = (n2.charAt(y) + z - '0') % 3 + '0'; 17 | n2.setCharAt(y, (char)a2); 18 | if (Integer.valueOf(n1.toString(), 2).equals(Integer.valueOf(n2.toString(), 3))) { 19 | System.out.println(Integer.valueOf(n1.toString(), 2)); 20 | System.exit(0); 21 | } 22 | a1 = (n1.charAt(x) + 1 - '0') % 2 + '0'; 23 | n1.setCharAt(x, (char)a1); 24 | a2 = (n2.charAt(y) + 3 - z - '0') % 3 + '0'; 25 | n2.setCharAt(y, (char)a2); 26 | } 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2011_Cow_Lineup_2.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.HashSet; 4 | import java.util.Scanner; 5 | 6 | public class USACO_2011_Cow_Lineup_2 { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int numOfCows = scan.nextInt(); 11 | int maxBreed = scan.nextInt(); 12 | int[] cows = new int[numOfCows]; 13 | for (int x = 0; x < cows.length; x++) 14 | cows[x] = scan.nextInt(); 15 | int max = 1; 16 | for (int x = 0; x < cows.length; x++) { 17 | int curr = 1; 18 | HashSet s = new HashSet(); 19 | for (int y = x + 1; y < cows.length; y++) { 20 | if (cows[y] != cows[x]) { 21 | s.add(cows[y]); 22 | } 23 | if (s.size() > maxBreed) 24 | break; 25 | if (cows[y] == cows[x]) 26 | curr++; 27 | if (curr > max) 28 | max = curr; 29 | } 30 | } 31 | System.out.println(max); 32 | } 33 | } -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2011_Cow_Photography.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int order[20000]; 6 | unordered_map pos[5]; 7 | int n; 8 | 9 | bool cmp(int o1, int o2) { 10 | int total = 0; 11 | for (int x = 0; x < 5; x++) 12 | if (pos[x][o1] < pos[x][o2]) 13 | total++; 14 | return total > 2; 15 | } 16 | 17 | int main() { 18 | scanf("%d", &n); 19 | for (int x = 0; x < 5; x++) { 20 | for (int y = 0; y < n; y++) { 21 | int cow; 22 | scanf("%d", &cow); 23 | pos[x][cow] = y; 24 | order[y] = cow; 25 | } 26 | } 27 | sort(order, order + n, cmp); 28 | for (int x = 0; x < n; x++) 29 | printf("%d\n", order[x]); 30 | } 31 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2011_Tile_Exchanging.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Scanner; 4 | 5 | public class USACO_2011_Tile_Exchanging { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int numOfTiles = scan.nextInt(); 10 | int area = scan.nextInt(); 11 | int[] tiles = new int[numOfTiles + 1]; 12 | for (int x = 1; x < tiles.length; x++) 13 | tiles[x] = scan.nextInt(); 14 | 15 | int[][] table = new int[numOfTiles + 1][area + 1]; 16 | for (int x = 1; x < table[0].length; x++) 17 | table[0][x] = 50000; 18 | for (int x = 1; x < table.length; x++) { 19 | for (int y = 0; y < table[0].length; y++) { 20 | table[x][y] = 50000; 21 | for (int z = 1; z * z <= y; z++) { 22 | int cost = Math.abs(tiles[x] - z); 23 | table[x][y] = Math.min(table[x][y], table[x - 1][y - (z * z)] + cost * cost); 24 | } 25 | } 26 | } 27 | System.out.println(table[table.length - 1][table[0].length - 1] == 50000 ? -1 : table[table.length - 1][table[0].length - 1]); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2011_Umbrella_for_Cows.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | class USACO_2011_Umbrella_for_Cows { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int[] cows = new int[scan.nextInt()]; 11 | int[] stalls = new int[scan.nextInt()]; 12 | for (int x = 0; x < cows.length; x++) 13 | cows[x] = scan.nextInt(); 14 | Arrays.sort(cows); 15 | for (int x = 0; x < stalls.length; x++) 16 | stalls[x] = scan.nextInt(); 17 | for (int x = stalls.length - 2; x >= 0; x--) 18 | if (stalls[x] > stalls[x + 1]) 19 | stalls[x] = stalls[x + 1]; 20 | int[] dp = new int[cows.length]; 21 | dp[0] = stalls[0]; 22 | 23 | for (int x = 1; x < cows.length; x++) { 24 | dp[x] = stalls[cows[x] - cows[0]]; 25 | 26 | for (int y = 0; y < x; y++) 27 | if (stalls[cows[x] - cows[y + 1]] + dp[y] < dp[x]) 28 | dp[x] = stalls[cows[x] - cows[y + 1]] + dp[y]; 29 | } 30 | System.out.println(dp[dp.length - 1]); 31 | } 32 | } -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2012_Bovine_Alliance.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define MOD 1000000007ll 6 | 7 | int n, m; 8 | bool v[100000]; 9 | vector> adj(100000); 10 | long long comp = 0; 11 | 12 | long long dfs(int x) { 13 | comp++; 14 | v[x] = true; 15 | long long total = 0; 16 | for (int i = 0; i < adj[x].size(); i++) { 17 | if (!v[adj[x][i]]) 18 | total += dfs(adj[x][i]); 19 | } 20 | return adj[x].size() + total; 21 | } 22 | 23 | int main() { 24 | scanf("%d%d", &n, &m); 25 | 26 | for (int x = 0; x < m; x++) { 27 | int a, b; 28 | scanf("%d%d", &a, &b); 29 | a--; 30 | b--; 31 | adj[a].push_back(b); 32 | adj[b].push_back(a); 33 | } 34 | long long total = 1; 35 | for (int x = 0; x < n; x++) { 36 | if (!v[x]) { 37 | comp = 0; 38 | long long count = dfs(x) / 2; 39 | if (comp == count) 40 | total *= 2; 41 | else if (comp - 1 == count) 42 | total *= comp; 43 | total %= MOD; 44 | } 45 | } 46 | printf("%d\n", total % MOD); 47 | return 0; 48 | } 49 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2012_Cows_In_A_Row.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Scanner; 4 | 5 | public class USACO_2012_Cows_In_A_Row { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int n = scan.nextInt(); 10 | int[] cows = new int[n]; 11 | int max = -1; 12 | for (int x = 0; x < n; x++) 13 | cows[x] = scan.nextInt(); 14 | for (int x = 0; x < n; x++) { 15 | int numOfBreeds = 0; 16 | int count = 1; 17 | int id2 = -1; 18 | for (int y = x + 1; y < n && numOfBreeds < 2; y++) { 19 | if (cows[y] != id2 && cows[y] != cows[x]) { 20 | numOfBreeds++; 21 | id2 = cows[y]; 22 | } else if (cows[y] == cows[x]) 23 | count++; 24 | } 25 | max = Math.max(count, max); 26 | } 27 | System.out.println(max); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2012_Find_The_Cow.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Scanner; 4 | 5 | public class USACO_2012_Find_The_Cow { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | String s = scan.next(); 10 | int sum = 0; 11 | int first = 0; 12 | for (int x = 0; x < s.length() - 1; x++) { 13 | if (s.charAt(x) == '(' && s.charAt(x + 1) == '(') 14 | first++; 15 | else if (s.charAt(x) == ')' && s.charAt(x + 1) == ')') 16 | sum += first; 17 | } 18 | System.out.println(sum); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2012_Jan_Haybale_Stacking.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class USACO_2012_Jan_Haybale_Stacking { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int n = scan.nextInt(); 11 | int k = scan.nextInt(); 12 | int[] input = new int[n + 1]; 13 | for (; k > 0; k--) { 14 | input[scan.nextInt() - 1]++; 15 | input[scan.nextInt()]--; 16 | } 17 | int[] stacks = new int[n]; 18 | int curr = 0; 19 | for (int x = 0; x < n; x++) { 20 | curr += input[x]; 21 | stacks[x] = curr; 22 | } 23 | Arrays.sort(stacks); 24 | System.out.println(stacks[stacks.length / 2]); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2012_Times_17.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | char num1[1001]; 6 | char num2[1001]; 7 | char input[1001]; 8 | char result[1001] = {0}; 9 | 10 | int main() { 11 | scanf("%s", input); 12 | sprintf(num1, "00000%s", input); 13 | sprintf(num2, "0%s0000", input); 14 | 15 | int length = strlen(num1); 16 | for (int x = length; x > 0; x--) { 17 | result[x] += num1[x] + num2[x] - 2 * '0'; 18 | if (result[x] >= 2) 19 | result[x] -= 2, result[x - 1] += 1; 20 | } 21 | for (int x = 0; x < length; x++) { 22 | if (x == 0 && result[0] == 0) 23 | continue; 24 | printf("%d", result[x]); 25 | } 26 | printf("\n"); 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2012_Wifi_Setup.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class USACO_2012_Wifi_Setup { 7 | static Scanner scan = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | int n = scan.nextInt(); 11 | // cost is a+b*r 12 | int a = scan.nextInt(); 13 | int b = scan.nextInt(); 14 | int[] cows = new int[n + 1]; 15 | double[] dp = new double[n + 1]; 16 | for (int x = 1; x < n + 1; x++) { 17 | cows[x] = scan.nextInt(); 18 | dp[x] = 5000005; 19 | } 20 | Arrays.sort(cows); 21 | 22 | for (int x = 1; x < n + 1; x++) { 23 | for (int y = 1; y <= x; y++) { 24 | double r = (cows[x] - cows[y]) / 2.0; 25 | dp[x] = Math.min(dp[x], dp[y - 1] + a + b * r); 26 | } 27 | } 28 | System.out.println(dp[n]); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2013_Breed_Proximity.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Scanner; 4 | 5 | public class USACO_2013_Breed_Proximity { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int n = scan.nextInt(); 10 | int k = scan.nextInt(); 11 | int[] cows = new int[n]; 12 | for (int x = 0; x < n; x++) 13 | cows[x] = scan.nextInt(); 14 | int[] curr = new int[5000000]; 15 | int max = 0; 16 | for (int x = 0; x < n; x++) { 17 | curr[cows[x]]++; 18 | if (x > k) 19 | curr[cows[x - k - 1]]--; 20 | if (curr[cows[x]] > 1 && cows[x] > max) 21 | max = cows[x]; 22 | } 23 | System.out.println(max); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2013_Record_Keeping.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Arrays; 4 | import java.util.Scanner; 5 | 6 | public class USACO_2013_Record_Keeping { 7 | public static void main(String[] args) { 8 | Scanner scan = new Scanner(System.in); 9 | int hours = scan.nextInt(); 10 | String[] n = new String[hours]; 11 | for (int x = hours - 1; x >= 0; x--) { 12 | String[] names = new String[3]; 13 | for (int y = 0; y < names.length; y++) 14 | names[y] = scan.next(); 15 | Arrays.sort(names); 16 | n[x] = names[0] + " " + names[1] + " " + names[2]; 17 | } 18 | Arrays.sort(n); 19 | int curr = 1; 20 | int max = -1; 21 | for (int x = 0; x < hours - 1; x++) { 22 | if (n[x].equals(n[x + 1])) 23 | curr++; 24 | else 25 | curr = 1; 26 | if (curr > max) 27 | max = curr; 28 | } 29 | System.out.println(max); 30 | scan.close(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2014_Cow_Decathlon.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | struct award { 6 | int minValue; 7 | int points; 8 | award(int minValue_, int points_) { 9 | minValue = minValue_; 10 | points = points_; 11 | } 12 | }; 13 | 14 | int n; 15 | int k; 16 | int skill[20][20]; 17 | vector> awards(21); 18 | int dp[1 << 20]; 19 | 20 | int main() { 21 | scanf("%d%d", &n, &k); 22 | 23 | for (int x = 0; x < k; x++) { 24 | int a, b, c; 25 | scanf("%d%d%d", &a, &b, &c); 26 | awards[a].push_back(award(b, c)); 27 | } 28 | for (int x = 0; x < n; x++) 29 | for (int y = 0; y < n; y++) 30 | scanf("%d", &skill[x][y]); 31 | for (int x = 1; x < (1 << n); x++) { 32 | int maxV = 0; 33 | int length = __builtin_popcount(x); 34 | for (int y = 0; y < n; y++) 35 | if (x & (1 << y)) 36 | maxV = max(maxV, dp[x ^ (1 << y)] + skill[y][length - 1]); 37 | 38 | int next = maxV; 39 | for (int y = 0; y < awards[length].size(); y++) 40 | if (maxV >= awards[length][y].minValue) 41 | next += awards[length][y].points; 42 | dp[x] = next; 43 | } 44 | printf("%d", dp[(1 << n) - 1]); 45 | 46 | return 0; 47 | } 48 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2014_Secret_Code_Silver.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Scanner; 4 | 5 | public class USACO_2014_Secret_Code_Silver { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | String input = scan.nextLine(); 10 | int ways = count(input); 11 | 12 | System.out.println(ways); 13 | } 14 | 15 | private static int count(String s) { 16 | if (s.length() % 2 == 0 || s.length() == 1) 17 | return 0; 18 | 19 | int ways = 0; 20 | int l = s.length(); 21 | if (s.substring(0, l / 2).equals(s.substring(l / 2, l - 1))) 22 | ways += count(s.substring(l / 2, l)) + 1; 23 | if (s.substring(0, l / 2).equals(s.substring(l / 2 + 1, l))) 24 | ways += count(s.substring(l / 2, l)) + 1; 25 | 26 | if (s.substring(0, l / 2).equals(s.substring(l / 2 + 1, l))) 27 | ways += count(s.substring(0, l / 2 + 1)) + 1; 28 | if (s.substring(1, l / 2 + 1).equals(s.substring(l / 2 + 1, l))) 29 | ways += count(s.substring(0, l / 2 + 1)) + 1; 30 | return ways; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2014_Ski_Course_Design.java: -------------------------------------------------------------------------------- 1 | package contest.usaco; 2 | 3 | import java.util.Scanner; 4 | 5 | public class USACO_2014_Ski_Course_Design { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | 10 | int hills[] = new int[101]; 11 | int max = -1; 12 | int min = 101; 13 | for (int x = scan.nextInt(); x > 0; x--) { 14 | int a = scan.nextInt(); 15 | hills[a]++; 16 | if (a < min) 17 | min = a; 18 | if (a > max) 19 | max = a; 20 | } 21 | if (max - min <= 17) 22 | System.out.println(0); 23 | 24 | else { 25 | int minCost = Integer.MAX_VALUE; 26 | for (int lowerBound = max - 17; lowerBound >= min; max--, lowerBound--) { 27 | int cost = 0; 28 | for (int x = 0; x < lowerBound; x++) 29 | if (x < lowerBound) 30 | cost += (lowerBound - (x)) * (lowerBound - (x)) * hills[x]; 31 | for (int x = 100; x > max; x--) 32 | if (x > max) 33 | cost += (x - max) * (x - max) * hills[x]; 34 | 35 | if (cost < minCost) 36 | minCost = cost; 37 | } 38 | System.out.println(minCost); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2015_Censoring_Bronze.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | int main() { 6 | string s, t; 7 | cin >> s >> t; 8 | string res = ""; 9 | 10 | for (int i = 0; i < s.size(); i++) { 11 | res += s[i]; 12 | if (res.size() >= t.size() && res.substr(res.size() - t.size()) == t) { 13 | res.resize(res.size() - t.size()); 14 | } 15 | } 16 | cout << res << endl; 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /src/contest/usaco/USACO_2015_Censoring_Silver.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | using namespace std; 4 | 5 | #define SIZE 1000001 6 | 7 | int prefix[SIZE]; 8 | int dp[SIZE]; 9 | 10 | void computePrefix(string t) { 11 | prefix[0] = 0; 12 | int len = 0; 13 | for (int i = 1; i < t.size(); i++) { 14 | int j = prefix[i - 1]; 15 | while (j != 0 && t[i] != t[j]) 16 | j = prefix[j - 1]; 17 | if (t[i] == t[j]) 18 | j++; 19 | prefix[i] = j; 20 | } 21 | } 22 | int main() { 23 | ofstream out("censor.out"); 24 | ifstream in("censor.in"); 25 | string S, T; 26 | in >> S >> T; 27 | computePrefix(T); 28 | int sz = T.size(); 29 | int start = 0; 30 | string R = ""; 31 | int j = 0; 32 | dp[0] = 0; 33 | for (int i = 0; i < S.size(); i++) { 34 | R += S[i]; 35 | while (j != 0 && S[i] != T[j]) 36 | j = prefix[j - 1]; 37 | if (S[i] == T[j]) { 38 | j++; 39 | if (j == T.size()) { 40 | j = dp[R.size() - T.size() - 1]; 41 | R.resize(R.size() - T.size()); 42 | } 43 | } 44 | dp[R.size() - 1] = j; 45 | } 46 | out << R << endl; 47 | out.close(); 48 | return 0; 49 | } 50 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 10.in: -------------------------------------------------------------------------------- 1 | 8 2 | g c 3 | b c 4 | e d 5 | h f 6 | a b 7 | d h 8 | f h 9 | b g 10 | 30 11 | hccccfacchfffbhabedhcfhh dbgeggdcgbchfabbcddcecfh 12 | hbfa dadb 13 | chabdcd dbaafac 14 | aghgfeadcbehffebecb hbaffhddhdebbgcaeda 15 | c e 16 | befhhdfededhdffdbgb cadbbfdafafbfddfchc 17 | dbfbggdbefcgaggdbggadaecc fcdchhfcadehghhfchhgfgaee 18 | d a 19 | bdcagbfhacceebaffggfeagfg ddgbfghhffbfbaegeecdgghhg 20 | cdbgcf efched 21 | dhfbf behfg 22 | hdggccahgdebaegcfgcdgbce bfhheegbhfacgahedhefhcea 23 | gdg gch 24 | gbheddaeddagggadhdgadb hcbaffgaffghhhgfbfhgfc 25 | becggdeafbdaha caehhfagdcfgbg 26 | eabaabfb hhfcbgfb 27 | eehhcfdhhgffbhbgfheaf aabbedfbbhddcbchdbagd 28 | aggffac dbeghcg 29 | dfaaaccfadchc fdgggeedgfebe 30 | a h 31 | ace eff 32 | cddhbehc bdddchgh 33 | hcbcbafdddhcbechafggfef bececgdfffbecaebgdhhdad 34 | dbdcefdbgfdbeh ahahahbdgbbdgc 35 | fe hd 36 | eagagahdcbhbhdedbfeb cbahbeadbgabggedbbhh 37 | df da 38 | gcbhgdfgabe ebhcfhhhdhc 39 | ffa ddg 40 | gaedbfgggfgfadd hgafcdhhhdhdgff 41 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 10.out: -------------------------------------------------------------------------------- 1 | NO 2 | NO 3 | NO 4 | NO 5 | YES 6 | YES 7 | YES 8 | NO 9 | NO 10 | YES 11 | NO 12 | YES 13 | NO 14 | YES 15 | YES 16 | NO 17 | YES 18 | NO 19 | YES 20 | NO 21 | NO 22 | NO 23 | YES 24 | NO 25 | NO 26 | NO 27 | NO 28 | NO 29 | YES 30 | YES 31 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 11.out: -------------------------------------------------------------------------------- 1 | NO 2 | NO 3 | NO 4 | NO 5 | NO 6 | NO 7 | YES 8 | NO 9 | NO 10 | NO 11 | YES 12 | NO 13 | NO 14 | NO 15 | YES 16 | NO 17 | YES 18 | YES 19 | YES 20 | NO 21 | NO 22 | NO 23 | YES 24 | YES 25 | YES 26 | YES 27 | NO 28 | YES 29 | NO 30 | YES 31 | NO 32 | NO 33 | NO 34 | NO 35 | NO 36 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 12.out: -------------------------------------------------------------------------------- 1 | NO 2 | NO 3 | YES 4 | YES 5 | NO 6 | NO 7 | NO 8 | NO 9 | YES 10 | NO 11 | YES 12 | YES 13 | NO 14 | YES 15 | NO 16 | YES 17 | YES 18 | YES 19 | NO 20 | NO 21 | NO 22 | NO 23 | NO 24 | NO 25 | NO 26 | NO 27 | YES 28 | NO 29 | YES 30 | NO 31 | YES 32 | YES 33 | NO 34 | NO 35 | YES 36 | NO 37 | NO 38 | YES 39 | NO 40 | YES 41 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 13.out: -------------------------------------------------------------------------------- 1 | NO 2 | YES 3 | NO 4 | NO 5 | YES 6 | NO 7 | YES 8 | NO 9 | NO 10 | NO 11 | NO 12 | NO 13 | NO 14 | NO 15 | NO 16 | YES 17 | NO 18 | NO 19 | NO 20 | NO 21 | NO 22 | YES 23 | NO 24 | NO 25 | NO 26 | YES 27 | NO 28 | NO 29 | NO 30 | YES 31 | NO 32 | NO 33 | NO 34 | NO 35 | YES 36 | NO 37 | NO 38 | YES 39 | NO 40 | YES 41 | YES 42 | NO 43 | YES 44 | NO 45 | YES 46 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 14.out: -------------------------------------------------------------------------------- 1 | YES 2 | YES 3 | NO 4 | YES 5 | NO 6 | NO 7 | YES 8 | NO 9 | NO 10 | NO 11 | NO 12 | NO 13 | NO 14 | NO 15 | NO 16 | NO 17 | NO 18 | YES 19 | NO 20 | NO 21 | YES 22 | NO 23 | NO 24 | YES 25 | NO 26 | NO 27 | NO 28 | NO 29 | YES 30 | NO 31 | YES 32 | NO 33 | NO 34 | NO 35 | NO 36 | YES 37 | NO 38 | NO 39 | NO 40 | NO 41 | NO 42 | YES 43 | YES 44 | YES 45 | YES 46 | NO 47 | NO 48 | NO 49 | NO 50 | NO 51 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 15.out: -------------------------------------------------------------------------------- 1 | NO 2 | YES 3 | NO 4 | YES 5 | NO 6 | YES 7 | NO 8 | YES 9 | YES 10 | YES 11 | NO 12 | NO 13 | NO 14 | NO 15 | YES 16 | NO 17 | NO 18 | NO 19 | NO 20 | NO 21 | NO 22 | NO 23 | YES 24 | NO 25 | YES 26 | NO 27 | NO 28 | NO 29 | YES 30 | YES 31 | NO 32 | NO 33 | YES 34 | YES 35 | YES 36 | YES 37 | NO 38 | NO 39 | NO 40 | YES 41 | NO 42 | YES 43 | YES 44 | YES 45 | NO 46 | YES 47 | NO 48 | YES 49 | NO 50 | NO 51 | NO 52 | NO 53 | YES 54 | NO 55 | NO 56 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 16.out: -------------------------------------------------------------------------------- 1 | YES 2 | NO 3 | NO 4 | NO 5 | NO 6 | YES 7 | NO 8 | NO 9 | NO 10 | NO 11 | NO 12 | NO 13 | NO 14 | NO 15 | YES 16 | NO 17 | NO 18 | YES 19 | NO 20 | NO 21 | NO 22 | NO 23 | NO 24 | NO 25 | YES 26 | YES 27 | YES 28 | NO 29 | YES 30 | NO 31 | YES 32 | NO 33 | YES 34 | YES 35 | NO 36 | NO 37 | YES 38 | NO 39 | NO 40 | NO 41 | YES 42 | NO 43 | NO 44 | YES 45 | YES 46 | NO 47 | NO 48 | YES 49 | NO 50 | NO 51 | NO 52 | NO 53 | NO 54 | YES 55 | NO 56 | YES 57 | NO 58 | NO 59 | YES 60 | NO 61 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 17.out: -------------------------------------------------------------------------------- 1 | NO 2 | NO 3 | NO 4 | NO 5 | YES 6 | YES 7 | NO 8 | NO 9 | YES 10 | NO 11 | YES 12 | YES 13 | NO 14 | YES 15 | NO 16 | NO 17 | NO 18 | NO 19 | YES 20 | NO 21 | YES 22 | YES 23 | NO 24 | NO 25 | YES 26 | NO 27 | YES 28 | NO 29 | NO 30 | NO 31 | NO 32 | YES 33 | YES 34 | YES 35 | YES 36 | YES 37 | NO 38 | YES 39 | YES 40 | NO 41 | NO 42 | NO 43 | NO 44 | NO 45 | YES 46 | NO 47 | YES 48 | NO 49 | NO 50 | NO 51 | NO 52 | YES 53 | YES 54 | YES 55 | NO 56 | YES 57 | YES 58 | NO 59 | NO 60 | YES 61 | YES 62 | YES 63 | YES 64 | YES 65 | YES 66 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 18.out: -------------------------------------------------------------------------------- 1 | YES 2 | NO 3 | YES 4 | NO 5 | NO 6 | NO 7 | YES 8 | NO 9 | NO 10 | NO 11 | NO 12 | YES 13 | NO 14 | NO 15 | NO 16 | YES 17 | NO 18 | YES 19 | NO 20 | YES 21 | NO 22 | YES 23 | NO 24 | YES 25 | NO 26 | NO 27 | NO 28 | YES 29 | YES 30 | YES 31 | NO 32 | YES 33 | NO 34 | NO 35 | NO 36 | NO 37 | NO 38 | NO 39 | NO 40 | NO 41 | YES 42 | NO 43 | NO 44 | NO 45 | YES 46 | YES 47 | NO 48 | YES 49 | YES 50 | YES 51 | YES 52 | NO 53 | NO 54 | YES 55 | NO 56 | NO 57 | NO 58 | NO 59 | NO 60 | NO 61 | NO 62 | NO 63 | YES 64 | NO 65 | NO 66 | NO 67 | NO 68 | NO 69 | YES 70 | NO 71 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 19.out: -------------------------------------------------------------------------------- 1 | NO 2 | NO 3 | NO 4 | NO 5 | YES 6 | NO 7 | NO 8 | YES 9 | NO 10 | NO 11 | YES 12 | NO 13 | NO 14 | YES 15 | NO 16 | NO 17 | NO 18 | NO 19 | NO 20 | YES 21 | NO 22 | YES 23 | NO 24 | YES 25 | NO 26 | NO 27 | NO 28 | YES 29 | YES 30 | NO 31 | NO 32 | NO 33 | NO 34 | NO 35 | NO 36 | YES 37 | NO 38 | YES 39 | NO 40 | NO 41 | NO 42 | NO 43 | YES 44 | NO 45 | YES 46 | NO 47 | NO 48 | NO 49 | YES 50 | YES 51 | NO 52 | NO 53 | YES 54 | NO 55 | NO 56 | YES 57 | NO 58 | NO 59 | YES 60 | NO 61 | YES 62 | NO 63 | NO 64 | NO 65 | YES 66 | NO 67 | NO 68 | NO 69 | YES 70 | YES 71 | NO 72 | YES 73 | NO 74 | NO 75 | YES 76 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 20.out: -------------------------------------------------------------------------------- 1 | YES 2 | YES 3 | NO 4 | NO 5 | YES 6 | NO 7 | NO 8 | NO 9 | NO 10 | YES 11 | NO 12 | YES 13 | NO 14 | NO 15 | NO 16 | YES 17 | NO 18 | NO 19 | NO 20 | YES 21 | YES 22 | YES 23 | YES 24 | YES 25 | NO 26 | YES 27 | YES 28 | NO 29 | NO 30 | NO 31 | NO 32 | NO 33 | NO 34 | NO 35 | YES 36 | NO 37 | NO 38 | YES 39 | YES 40 | YES 41 | YES 42 | YES 43 | NO 44 | NO 45 | NO 46 | NO 47 | NO 48 | YES 49 | NO 50 | YES 51 | NO 52 | NO 53 | YES 54 | YES 55 | NO 56 | NO 57 | NO 58 | NO 59 | NO 60 | NO 61 | NO 62 | YES 63 | NO 64 | NO 65 | YES 66 | YES 67 | NO 68 | NO 69 | YES 70 | NO 71 | NO 72 | NO 73 | NO 74 | YES 75 | YES 76 | NO 77 | NO 78 | NO 79 | YES 80 | NO 81 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 21.out: -------------------------------------------------------------------------------- 1 | YES 2 | YES 3 | NO 4 | NO 5 | NO 6 | NO 7 | YES 8 | NO 9 | NO 10 | NO 11 | YES 12 | NO 13 | YES 14 | NO 15 | NO 16 | NO 17 | NO 18 | NO 19 | NO 20 | YES 21 | YES 22 | NO 23 | YES 24 | NO 25 | NO 26 | NO 27 | NO 28 | NO 29 | NO 30 | YES 31 | NO 32 | NO 33 | YES 34 | YES 35 | YES 36 | YES 37 | YES 38 | NO 39 | NO 40 | NO 41 | NO 42 | NO 43 | NO 44 | YES 45 | YES 46 | NO 47 | YES 48 | NO 49 | YES 50 | NO 51 | NO 52 | NO 53 | NO 54 | NO 55 | YES 56 | YES 57 | NO 58 | NO 59 | NO 60 | NO 61 | NO 62 | NO 63 | NO 64 | NO 65 | NO 66 | NO 67 | YES 68 | YES 69 | NO 70 | NO 71 | YES 72 | NO 73 | YES 74 | YES 75 | NO 76 | NO 77 | YES 78 | NO 79 | NO 80 | NO 81 | NO 82 | NO 83 | NO 84 | NO 85 | YES 86 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 22.out: -------------------------------------------------------------------------------- 1 | NO 2 | NO 3 | YES 4 | NO 5 | YES 6 | YES 7 | YES 8 | YES 9 | NO 10 | NO 11 | NO 12 | NO 13 | NO 14 | YES 15 | NO 16 | YES 17 | NO 18 | NO 19 | YES 20 | NO 21 | YES 22 | YES 23 | NO 24 | NO 25 | NO 26 | NO 27 | NO 28 | NO 29 | NO 30 | NO 31 | NO 32 | NO 33 | NO 34 | YES 35 | YES 36 | NO 37 | NO 38 | YES 39 | NO 40 | NO 41 | NO 42 | NO 43 | NO 44 | YES 45 | YES 46 | YES 47 | NO 48 | NO 49 | YES 50 | NO 51 | NO 52 | NO 53 | NO 54 | NO 55 | NO 56 | NO 57 | NO 58 | NO 59 | YES 60 | YES 61 | NO 62 | NO 63 | NO 64 | NO 65 | NO 66 | NO 67 | YES 68 | YES 69 | NO 70 | YES 71 | NO 72 | YES 73 | NO 74 | YES 75 | YES 76 | YES 77 | NO 78 | YES 79 | YES 80 | NO 81 | NO 82 | NO 83 | NO 84 | NO 85 | NO 86 | NO 87 | YES 88 | NO 89 | YES 90 | NO 91 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 23.out: -------------------------------------------------------------------------------- 1 | NO 2 | YES 3 | YES 4 | YES 5 | NO 6 | YES 7 | NO 8 | NO 9 | YES 10 | YES 11 | NO 12 | NO 13 | NO 14 | NO 15 | YES 16 | YES 17 | NO 18 | NO 19 | NO 20 | YES 21 | NO 22 | YES 23 | NO 24 | NO 25 | NO 26 | YES 27 | YES 28 | YES 29 | NO 30 | YES 31 | YES 32 | NO 33 | NO 34 | NO 35 | YES 36 | NO 37 | YES 38 | NO 39 | NO 40 | YES 41 | YES 42 | NO 43 | YES 44 | NO 45 | NO 46 | NO 47 | YES 48 | YES 49 | NO 50 | NO 51 | NO 52 | YES 53 | YES 54 | NO 55 | NO 56 | NO 57 | YES 58 | YES 59 | NO 60 | YES 61 | NO 62 | NO 63 | NO 64 | NO 65 | NO 66 | NO 67 | NO 68 | NO 69 | NO 70 | NO 71 | YES 72 | YES 73 | NO 74 | NO 75 | NO 76 | NO 77 | YES 78 | NO 79 | NO 80 | YES 81 | NO 82 | NO 83 | NO 84 | YES 85 | YES 86 | NO 87 | NO 88 | NO 89 | NO 90 | YES 91 | NO 92 | NO 93 | NO 94 | NO 95 | YES 96 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 24.out: -------------------------------------------------------------------------------- 1 | NO 2 | NO 3 | NO 4 | YES 5 | NO 6 | YES 7 | YES 8 | YES 9 | NO 10 | NO 11 | NO 12 | NO 13 | NO 14 | NO 15 | NO 16 | NO 17 | NO 18 | YES 19 | YES 20 | NO 21 | NO 22 | NO 23 | NO 24 | NO 25 | YES 26 | NO 27 | NO 28 | YES 29 | NO 30 | NO 31 | NO 32 | NO 33 | NO 34 | YES 35 | NO 36 | NO 37 | NO 38 | YES 39 | YES 40 | NO 41 | NO 42 | NO 43 | YES 44 | NO 45 | NO 46 | NO 47 | NO 48 | NO 49 | NO 50 | YES 51 | YES 52 | NO 53 | YES 54 | NO 55 | NO 56 | NO 57 | NO 58 | NO 59 | NO 60 | YES 61 | NO 62 | YES 63 | NO 64 | NO 65 | YES 66 | NO 67 | NO 68 | NO 69 | NO 70 | NO 71 | NO 72 | NO 73 | NO 74 | NO 75 | YES 76 | YES 77 | NO 78 | NO 79 | NO 80 | NO 81 | YES 82 | NO 83 | NO 84 | YES 85 | YES 86 | YES 87 | NO 88 | NO 89 | NO 90 | YES 91 | YES 92 | NO 93 | NO 94 | NO 95 | NO 96 | YES 97 | NO 98 | YES 99 | YES 100 | NO 101 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 25.out: -------------------------------------------------------------------------------- 1 | YES 2 | NO 3 | YES 4 | NO 5 | NO 6 | NO 7 | NO 8 | NO 9 | YES 10 | YES 11 | NO 12 | YES 13 | YES 14 | NO 15 | YES 16 | NO 17 | NO 18 | NO 19 | NO 20 | NO 21 | NO 22 | NO 23 | NO 24 | YES 25 | NO 26 | NO 27 | YES 28 | NO 29 | NO 30 | NO 31 | YES 32 | NO 33 | NO 34 | YES 35 | YES 36 | NO 37 | YES 38 | NO 39 | NO 40 | NO 41 | NO 42 | YES 43 | YES 44 | NO 45 | YES 46 | YES 47 | NO 48 | YES 49 | YES 50 | NO 51 | NO 52 | NO 53 | NO 54 | YES 55 | NO 56 | NO 57 | NO 58 | NO 59 | NO 60 | NO 61 | NO 62 | NO 63 | YES 64 | NO 65 | NO 66 | NO 67 | NO 68 | NO 69 | NO 70 | NO 71 | NO 72 | NO 73 | NO 74 | NO 75 | YES 76 | NO 77 | NO 78 | NO 79 | YES 80 | NO 81 | YES 82 | YES 83 | NO 84 | YES 85 | YES 86 | YES 87 | YES 88 | YES 89 | YES 90 | NO 91 | NO 92 | NO 93 | NO 94 | NO 95 | YES 96 | NO 97 | YES 98 | NO 99 | YES 100 | NO 101 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 26.out: -------------------------------------------------------------------------------- 1 | YES 2 | NO 3 | YES 4 | NO 5 | NO 6 | NO 7 | NO 8 | NO 9 | YES 10 | YES 11 | NO 12 | NO 13 | YES 14 | YES 15 | YES 16 | NO 17 | YES 18 | YES 19 | YES 20 | NO 21 | NO 22 | YES 23 | YES 24 | NO 25 | YES 26 | NO 27 | NO 28 | NO 29 | YES 30 | YES 31 | YES 32 | NO 33 | NO 34 | NO 35 | YES 36 | NO 37 | NO 38 | NO 39 | NO 40 | YES 41 | YES 42 | NO 43 | NO 44 | NO 45 | YES 46 | NO 47 | NO 48 | NO 49 | YES 50 | YES 51 | NO 52 | YES 53 | NO 54 | YES 55 | NO 56 | NO 57 | YES 58 | NO 59 | YES 60 | YES 61 | YES 62 | YES 63 | NO 64 | NO 65 | NO 66 | NO 67 | NO 68 | NO 69 | NO 70 | NO 71 | YES 72 | NO 73 | NO 74 | YES 75 | NO 76 | YES 77 | NO 78 | NO 79 | NO 80 | YES 81 | NO 82 | YES 83 | NO 84 | NO 85 | YES 86 | YES 87 | NO 88 | NO 89 | YES 90 | NO 91 | NO 92 | YES 93 | NO 94 | NO 95 | YES 96 | NO 97 | YES 98 | NO 99 | NO 100 | NO 101 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 6.in: -------------------------------------------------------------------------------- 1 | 4 2 | a d 3 | b a 4 | a c 5 | a d 6 | 15 7 | cc cc 8 | ddbcddbdb adbabbacd 9 | bbcdad bbcdad 10 | bac ccb 11 | ada bdb 12 | dcccb bacdc 13 | dadcdbbca aacbdcbaa 14 | bbbcbb bbbcbb 15 | ddadab bddbcb 16 | ab cc 17 | bcdd caab 18 | bdcdbbcdcb bdcdbbcdcb 19 | dcdbaddcd dcdbaddcd 20 | bcdc abdc 21 | baaab acdaa 22 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 6.out: -------------------------------------------------------------------------------- 1 | YES 2 | NO 3 | YES 4 | NO 5 | NO 6 | NO 7 | NO 8 | YES 9 | NO 10 | NO 11 | NO 12 | YES 13 | YES 14 | NO 15 | NO 16 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 7.in: -------------------------------------------------------------------------------- 1 | 5 2 | d c 3 | c e 4 | b a 5 | e b 6 | a b 7 | 20 8 | eeaaacd bdbbdab 9 | dbedaaacedae aedbcbbbcbad 10 | eab bac 11 | abeadaaae dcbdedddb 12 | eabcbd abcaec 13 | edceaec edcedcc 14 | edceaaddd ccacebeca 15 | ecdaee bbaabc 16 | d e 17 | bddeaeaa bcccdadc 18 | cedebcbcd abebcacae 19 | caedbc adbeca 20 | dcbaaceaaadc ceaeaaeedacc 21 | aeaadebc dbeeaadb 22 | bea dbd 23 | caadcedacdbd addeabedaece 24 | dbc aee 25 | eb eb 26 | ddc acd 27 | ebaaccbcbad eaddaceadec 28 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 7.out: -------------------------------------------------------------------------------- 1 | NO 2 | NO 3 | NO 4 | YES 5 | NO 6 | NO 7 | NO 8 | NO 9 | YES 10 | NO 11 | YES 12 | YES 13 | NO 14 | NO 15 | NO 16 | YES 17 | NO 18 | NO 19 | NO 20 | NO 21 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 8.in: -------------------------------------------------------------------------------- 1 | 6 2 | e a 3 | e a 4 | d f 5 | d c 6 | d b 7 | b f 8 | 20 9 | eadef ffcef 10 | dd cc 11 | eefcffbfbdefbf efeaafbfedacca 12 | eaebbefddcba afceffaaabaa 13 | aaddfddfdceb faebccaecdad 14 | ffaddc abdacc 15 | adecbcfbec acdfefbedf 16 | abfcdbefcd aebfcedbfc 17 | aacfadefdd ffcfaacccc 18 | ad fa 19 | dcbafee dfeaaab 20 | eebfcbc ddebfef 21 | edebfcebefe cbbbdbccaab 22 | abdaeddbbbcaf aecadcceeefab 23 | de cd 24 | cebeaefefdde fdedadbdbccd 25 | cebcaeccfb fbdfeddafd 26 | bcd fec 27 | ea cd 28 | b e 29 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 8.out: -------------------------------------------------------------------------------- 1 | NO 2 | YES 3 | NO 4 | NO 5 | NO 6 | NO 7 | YES 8 | YES 9 | NO 10 | NO 11 | NO 12 | YES 13 | NO 14 | YES 15 | YES 16 | YES 17 | NO 18 | NO 19 | NO 20 | YES 21 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 9.in: -------------------------------------------------------------------------------- 1 | 7 2 | f e 3 | d b 4 | a g 5 | a f 6 | c e 7 | g b 8 | g b 9 | 25 10 | agfcgagc gfggefea 11 | acgcedfccbdbdbgc eabacfgaadfdfdba 12 | d f 13 | cgf ccf 14 | dbbeeeadbdeabdefgag fddcccefdfcedfcgbeb 15 | gcf bag 16 | gafaca begeae 17 | bgaacdddfdgbfcfdbccc eeecegdgcfddecgeacfb 18 | edbddbge cfdffdbc 19 | caaabgbffcddeegbcbg aeeedbdggaffccbdadb 20 | fcecedced dfbfacedd 21 | gddg bffb 22 | aeecbgcgbffdcfeggc dgcadfdagebaebdaea 23 | abcbdccgc edadfaaba 24 | daebgdgcbcbecfcf fbaddfgggcegcfag 25 | fcdfcgafa gafgabege 26 | ffdgb gcbca 27 | egafeabff fgbagddaf 28 | geadbdgaebcdafeae badebefabfgcfffca 29 | bcbfdaaed dadgfeecf 30 | fceecgdc gaccabfa 31 | bafdfbecaabccgef degfgdcaeedaabcg 32 | egfaeegebfee gbgfbedagdee 33 | eccbdcagd aegcgaegg 34 | ffedfecb badegecg 35 | -------------------------------------------------------------------------------- /src/contest/utsopen/UTS - P2 - 9.out: -------------------------------------------------------------------------------- 1 | NO 2 | YES 3 | YES 4 | NO 5 | YES 6 | YES 7 | YES 8 | NO 9 | YES 10 | YES 11 | NO 12 | YES 13 | NO 14 | YES 15 | NO 16 | YES 17 | NO 18 | NO 19 | NO 20 | YES 21 | YES 22 | YES 23 | NO 24 | NO 25 | NO 26 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_1996_Different_Base_Multiplication.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_1996_Different_Base_Multiplication { 6 | public static void main(String[] args) { 7 | Scanner scan = new Scanner(System.in); 8 | for (int x = 5; x > 0; x--) { 9 | 10 | String n1 = scan.next(); 11 | int b1 = scan.nextInt(); 12 | String n2 = scan.next(); 13 | int b2 = scan.nextInt(); 14 | int b3 = scan.nextInt(); 15 | 16 | String answer = Integer.toString((Integer.valueOf(n1, b1)) * Integer.valueOf(n2, b2), b3); 17 | System.out.println(answer); 18 | } 19 | scan.close(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_1996_Plentiful_Paths.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_1996_Plentiful_Paths { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int m = scan.nextInt(); 10 | int n = scan.nextInt(); 11 | int[][] table = new int[m][n]; 12 | int a; 13 | while ((a = scan.nextInt()) != 0) 14 | table[m - a][scan.nextInt() - 1] = 1; 15 | scan.next(); 16 | int solution[][] = new int[m][n]; 17 | for (int x = 0; x < m; x++) { 18 | for (int y = n - 1; y >= 0; y--) { 19 | a = x - 1 < 0 ? 0 : solution[x - 1][y]; 20 | int b = y + 1 > n - 1 ? 0 : solution[x][y + 1]; 21 | solution[x][y] = table[x][y] + (a > b ? a : b); 22 | } 23 | } 24 | System.out.println(solution[m - 1][0]); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_1997_Typing.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_1997_Typing { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int testcases = scan.nextInt(); 10 | scan.nextLine(); 11 | main: 12 | for (int x = testcases; x > 0; x--) { 13 | int[] alpha = new int[26]; 14 | String s = scan.nextLine().toLowerCase(); 15 | for (int y = 0; y < s.length(); y++) { 16 | if ((s.charAt(y)) - 97 >= 0 && (s.charAt(y)) - 97 < 26) 17 | alpha[(s.charAt(y)) - 97]++; 18 | } 19 | for (int y : alpha) 20 | if (y != 1) { 21 | System.out.println("Nope."); 22 | continue main; 23 | } 24 | System.out.println("OK."); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_1998_Return_Of_The_Plachta.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_1998_Return_Of_The_Plachta { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int x = 0; x <= 4; x++) { 10 | int a = scan.nextInt(); 11 | int b = scan.nextInt(); 12 | int c = scan.nextInt(); 13 | int d = scan.nextInt(); 14 | 15 | int gcf = gcf(b, d); 16 | 17 | int n2 = (b * d) / gcf; 18 | int n1 = n2 / b * a + n2 / d * c; 19 | gcf = gcf(n1, n2); 20 | n1 /= gcf; 21 | n2 /= gcf; 22 | System.out.println(n1 + (n2 == 1 ? "" : " " + n2)); 23 | } 24 | } 25 | 26 | public static int gcf(int a, int b) { 27 | if (b == 1) 28 | return 1; 29 | if (b == 0) 30 | return a; 31 | return gcf(b, a % b); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_1999_Goldfinger.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_1999_Goldfinger { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int input = scan.nextInt(); 10 | while (input != -1) { 11 | boolean[] primes = new boolean[16000]; 12 | primes[0] = true; 13 | for (int x = 1; x < primes.length; x += 2) 14 | if (x + 1 % 2 == 0) 15 | primes[x] = true; 16 | for (int x = 1; x * x < primes.length; x++) 17 | if (primes[x] == false) 18 | for (int y = (x + 1) * (x + 1) - 1; y < primes.length; y += (x + 1)) 19 | primes[y] = true; 20 | primes[0] = false; 21 | for (int x = 1; x <= input / 2; x++) { 22 | if (!primes[x - 1] && !primes[input - x - 1]) 23 | System.out.println(x + " " + (input - x)); 24 | } 25 | input = scan.nextInt(); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_1999_Good_Will_Hunting.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_1999_Good_Will_Hunting { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | double x = scan.nextDouble(); 10 | while (x != 0) { 11 | double r = 10.0; 12 | if (Math.abs(x) < 1) 13 | r = 0.1; 14 | int ex = 0; 15 | while (Math.abs(x) >= 10 || Math.abs(x) < 1) { 16 | x /= r; 17 | ex++; 18 | } 19 | if (r == 0.1) 20 | ex = -ex; 21 | System.out.printf("%.3f%s%n", x, ex == 0 ? "" : " x 10^" + ex); 22 | x = scan.nextDouble(); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_2001_Back_To_The_Future.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_2001_Back_To_The_Future { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int x = scan.nextInt(); x > 0; x--) { 10 | String binary = Integer.toString(scan.nextInt(), 2); 11 | System.out.println(toBase10(binary)); 12 | } 13 | } 14 | 15 | private static int toBase10(String binary) { 16 | int sum = 0; 17 | long product = 1; 18 | for (int x = 0; x < binary.length(); x++) { 19 | sum += product * (binary.charAt(x) - 48); 20 | product *= 2; 21 | } 22 | return sum; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_2001_Mission_Impossible_3.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_2001_Mission_Impossible_3 { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int x = scan.nextInt(); x > 0; x--) { 10 | long R = scan.nextLong(); 11 | long a = scan.nextLong(); 12 | long b = scan.nextLong(); 13 | long ans = 0; 14 | ans = R / a + R / b - R / ((a * b) / gcf(a, b)); 15 | System.out.println(ans); 16 | } 17 | } 18 | 19 | private static long gcf(long a, long b) { 20 | if (b == 0) 21 | return a; 22 | if (b == 1) 23 | return 1; 24 | return gcf(b, a % b); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_2002_A_Planning_Session.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_2002_A_Planning_Session { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int t = scan.nextInt(); t > 0; t--) { 10 | String[] s = scan.next().split(":"); 11 | int mins = (Integer.parseInt(s[0]) - 1) * 60 + Integer.parseInt(s[1]); 12 | int occ = scan.nextInt(); 13 | if (occ > 23) { 14 | System.out.println("Infinite"); 15 | continue; 16 | } 17 | int cnt = mins; 18 | int newMins = mins + 1; 19 | cnt++; 20 | if (newMins > 719) 21 | newMins -= 720; 22 | int sum = (newMins / 60 + 1) / 10 + (newMins / 60 + 1) % 10 + newMins % 60 / 10 + newMins % 60 % 10; 23 | while (sum != occ) { 24 | newMins++; 25 | cnt++; 26 | if (newMins > 719) 27 | newMins -= 720; 28 | sum = (newMins / 60 + 1) / 10 + (newMins / 60 + 1) % 10 + newMins % 60 / 10 + newMins % 60 % 10; 29 | } 30 | System.out.println(cnt - mins); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_2002_Deploying_Troops.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_2002_Deploying_Troops { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | int[] cows = new int[scan.nextInt()]; 10 | for (int x = 0; x < cows.length; x++) 11 | cows[x] = scan.nextInt(); 12 | for (int z = scan.nextInt(); z > 0; z--) { 13 | int counter = 0; 14 | int targetSum = scan.nextInt(); 15 | for (int x = 0; x < cows.length; x++) { 16 | int sum = 0; 17 | for (int y = x; y < cows.length; y++) { 18 | sum += cows[y]; 19 | if (sum == targetSum) 20 | counter++; 21 | else if (sum > targetSum) 22 | break; 23 | } 24 | } 25 | System.out.print(counter + " "); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_2002_Its_Party_Time.java: -------------------------------------------------------------------------------- 1 | package contest.woburn; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Woburn_Challenge_2002_Its_Party_Time { 6 | static Scanner scan = new Scanner(System.in); 7 | 8 | public static void main(String[] args) { 9 | for (int t = scan.nextInt(); t > 0; t--) { 10 | int a = scan.nextInt(); 11 | int b = scan.nextInt(); 12 | int c = scan.nextInt(); 13 | System.out.println(a + (b * c) / gcf(b, c)); 14 | } 15 | } 16 | 17 | private static int gcf(int b, int c) { 18 | if (c == 1) 19 | return 1; 20 | if (c == 0) 21 | return b; 22 | return gcf(c, b % c); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_2016_A_Spooky_Season.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 200000 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int main() { 21 | // freopen("in.txt", "r", stdin); 22 | // freopen("out.txt", "w", stdout); 23 | 24 | int N; 25 | scanf("%d", &N); 26 | printf("sp"); 27 | for (int i = 0; i < N; i++) 28 | printf("o"); 29 | printf("ky\n"); 30 | 31 | return 0; 32 | } 33 | -------------------------------------------------------------------------------- /src/contest/woburn/Woburn_Challenge_2016_Frankenstein's_Monster.cc: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define mp make_pair 4 | #define pb push_back 5 | #define INF 1 << 30 6 | #define MOD 1000000007 7 | #define rint(x) scanf("%d", &(x)) 8 | #define rlong(x) scanf("%lld", &(x)) 9 | #define SIZE 200000 10 | #define l(x) x << 1 11 | #define r(x) x << 1 | 1 12 | #define m(x, y) (x + y) / 2 13 | 14 | using namespace std; 15 | 16 | typedef long long ll; 17 | typedef pair pi; 18 | typedef pair pll; 19 | 20 | int main() { 21 | // freopen("in.txt", "r", stdin); 22 | // freopen("out.txt", "w", stdout); 23 | 24 | string s; 25 | cin >> s; 26 | s = "." + s + "."; 27 | size_t index; 28 | int startPos = 0; 29 | while ((index = s.find(".Frankenstein.", startPos)) != string::npos) { 30 | s.replace(index, 14, ".Frankenstein's.monster."); 31 | startPos = index + 23; 32 | } 33 | 34 | cout << s.substr(1, s.size() - 2) << endl; 35 | return 0; 36 | } 37 | --------------------------------------------------------------------------------