Use these filters to narrow down your next problem to solve:

OJ: , Topic: , Quality:

You can now sort these problems based on Distinct ACcepted Users (DACU) column.

Generally, problems with high DACU are the easier problems.

Note that we only update DACU column manually (not a live data).

As Kattis users, you can also sort these problems based Kattis points (usually correlated with DACU but not always).

Generally, problems with low Kattis points are the easier problems.

Note that we only update Point column manually (not a live data).

For Kattis and Google Chrome users, install Kattis Hint Giver created by one of my student Lin Si Jie that integrates this page directly with Kattis problems pages (Kattis has major UI/UX upgrade on early Jun 2022, Si Jie has updated this tool and added 'spoiler blur' so users can decide when to be spoiled; but Kattis changes its UI again by end 2023 so this feature is now broken again)**(Almost) all** of the easiest 1004 problems (range: [1.1..3.3] points, average at 2.2 points) have hints and solving them all gives you 1004*~2.2 ≥ 2208.8 total Kattis points — The Lower Bound of Programming Contests in the ~~2020s~~ year 2024.

Tips: You may want to occasionally 'Remove 'Kattis Hint Giver' from Chrome' and re-'Add it back to Chrome' to manually sync this Methods to Solve content with the local cache.

Kattis | Problem Title | CP4 | Hint | DACU | Point |
---|---|---|---|---|---|

mnist10class | mnist10class | non-starred |
partial scoring problem - neural network | 258 | 8.3 |

mnist2class | mnist2class | non-starred |
partial scoring problem - neural network | 242 | 8.0 |

mwvc | mwvc | non-starred |
optimization problem involving large MWVC instance up to N ≤ 4000. To get high score for this problem, you need to us... | 48 | 9.6 |

tsp | tsp | non-starred |
optimization problem involving large TSP instance up to N ≤ 1000. To get high score for this problem, you need to use... | 1334 | 9.6 |

addtwonumbers | addtwonumbers | 1.4a1, One-Liner I/O | just sum the two input integers | 3953 | 1.2 |

ameriskur | ameriskur | 1.4a1, One-Liner I/O | just print n*0.09144 | 2275 | 1.3 |

bitteeinbit | bitteeinbit | 1.4a1, One-Liner I/O | just print the first char of the input | 273 | 1.3 |

carrots | carrots | 1.4a1, One-Liner I/O | just print P | 15155 | 1.3 |

digitswap | digitswap | 1.4a1, One-Liner I/O | read the 2-digits input; print in reverse | 1227 | 1.3 |

echoechoecho | echoechoecho | 1.4a1, One-Liner I/O | re-print the input 3x | 1654 | 1.2 |

fifa | fifa | 1.4a1, One-Liner I/O | just output 2022+n//m (round down) | 2348 | 1.2 |

flatbokuveisla | flatbokuveisla | 1.4a1, One-Liner I/O | just print n mod m | 942 | 1.2 |

flytibaka | flytibaka | 1.4a1, One-Liner I/O | just do nothing (e.g., submit a blank Python code) | 688 | 1.4 |

greetings2 | greetings2 | 1.4a1, One-Liner I/O | just reprint the input as requested | 589 | 1.3 |

hello | hello | 1.4a1, One-Liner I/O | just print "Hello World!" | 39217 | 1.2 |

heroesofvelmar | heroesofvelmar | 1.4a1, One-Liner I/O | ad hoc card game; use the attached .json for the details; 3 cards have special cases | 237 | 1.9 |

leggjasaman | leggjasaman | 1.4a1, One-Liner I/O | just output n+m | 6564 | 1.1 |

metronome | metronome | 1.4a1, One-Liner I/O | just divide by 4.0 | 1614 | 1.3 |

ovissa | ovissa | 1.4a1, One-Liner I/O | just output the length of input string | 6088 | 1.2 |

planina | planina | 1.4a1, One-Liner I/O | just print (2^N+1)^2; OEIS A028400 | 5965 | 1.3 |

romans | romans | 1.4a1, One-Liner I/O | just print round(X * 1087.7626) | 2088 | 1.4 |

thelastproblem | thelastproblem | 1.4a1, One-Liner I/O | S can have space(s) | 76 | 1.8 |

tolvunarfraedingartelja | tolvunarfraedingartelja | 1.4a1, One-Liner I/O | just print n-1 | 1312 | 1.2 |

twosum | twosum | 1.4a1, One-Liner I/O | another a+b problem | 1540 | 1.4 |

velkomin | velkomin | 1.4a1, One-Liner I/O | just print 'VELKOMIN!' | 6081 | 1.1 |

vidsnuningur | vidsnuningur | 1.4a1, One-Liner I/O | just output the reverse of input string | 2570 | 1.2 |

aleidibio | aleidibio | 1.4a2, I/O + Sequences Only | just output c-(a+b) | 1233 | 1.2 |

betting | betting | 1.4a2, I/O + Sequences Only | simple probability formula | 788 | 1.2 |

ekkidaudi | ekkidaudi | 1.4a2, I/O + Sequences Only | simply reformat the input | 910 | 1.5 |

faktor | faktor | 1.4a2, I/O + Sequences Only | just print (I-1)*A+1 | 8022 | 1.2 |

gcvwr | gcvwr | 1.4a2, I/O + Sequences Only | simple math | 236 | 1.3 |

jackolanternjuxtaposition | jackolanternjuxtaposition | 1.4a2, I/O + Sequences Only | just print N*T*M | 53 | 1.7 |

r2 | r2 | 1.4a2, I/O + Sequences Only | just print 2*S-R1 | 14929 | 1.2 |

shandy | shandy | 1.4a2, I/O + Sequences Only | just print min(B, L) * 2 | 267 | 1.3 |

titlecost | titlecost | 1.4a2, I/O + Sequences Only | take the min of length of s vs c | 500 | 1.6 |

averagecharacter | averagecharacter | 1.4b, Repetition Only | sum ASCII values of all characters; divide by the number of characters | 365 | 1.6 |

codetosavelives | codetosavelives | 1.4b, Repetition Only | repeat t times; convert to ints; sum; convert to digits again | 238 | 1.5 |

cosmicpathoptimization | cosmicpathoptimization | 1.4b, Repetition Only | ignore the long text; just find the average temperature of M planets | 410 | 1.5 |

curvespeed | curvespeed | 1.4b, Repetition Only | for each test case, just apply the formula | 128 | 2.8 |

different | different | 1.4b, Repetition Only | use abs function per test case | 8964 | 2.3 |

jumbojavelin | jumbojavelin | 1.4b, Repetition Only | sum and offset by (N-1) | 112 | 1.5 |

nsum | nsum | 1.4b, Repetition Only | just sum the content of the small list | 1406 | 1.3 |

qaly | qaly | 1.4b, Repetition Only | trivial loop | 5955 | 1.2 |

ratingproblems | ratingproblems | 1.4b, Repetition Only | loop to sum the ratings; simple formula afterwards | 2227 | 1.3 |

reduplikation | reduplikation | 1.4b, Repetition Only | repeat s as the digit indicates | 3273 | 1.2 |

tarifa | tarifa | 1.4b, Repetition Only | one pass; array not needed | 9768 | 1.3 |

timeloop | timeloop | 1.4b, Repetition Only | just print 'num Abracadabra' N times | 17170 | 1.3 |

umferd | umferd | 1.4b, Repetition Only | loop; count the dots | 461 | 1.4 |

addingtrouble | addingtrouble | 1.4c, Selection Only | just check if A+B == C | 3686 | 1.3 |

blueberrywaffle | blueberrywaffle | 1.4c, Selection Only | formula with rounding; 2 cases | 716 | 1.9 |

canadianseh | canadianseh | 1.4c, Selection Only | just check the last three characters | 771 | 1.5 |

conteststruggles | conteststruggles | 1.4c, Selection Only | simple formula; check if answer in [0..100] | 101 | 1.9 |

fyi | fyi | 1.4c, Selection Only | if-else; 2 cases; output 1/0 if the input starts with '555'/not, respectively | 90 | 1.6 |

grading | grading | 1.4c, Selection Only | if-else; 6 cases | 483 | 1.4 |

hradgreining | hradgreining | 1.4c, Selection Only | if-else; 2 cases | 2253 | 1.3 |

hvertskalmaeta | hvertskalmaeta | 1.4c, Selection Only | only 3 municipalities go to 'Akureyri' | 383 | 1.5 |

internationaldates | internationaldates | 1.4c, Selection Only | 3 cases | 1154 | 1.5 |

isithalloween | isithalloween | 1.4c, Selection Only | if-else; 2 cases | 3761 | 1.3 |

judgingmoose | judgingmoose | 1.4c, Selection Only | if-else if-else; 3 cases | 4516 | 1.4 |

kikiboba | kikiboba | 1.4c, Selection Only | if-else; 4 cases | 3004 | 1.4 |

laptopsticker | laptopsticker | 1.4c, Selection Only | if-else; 2 cases; note: one centimeter for both sides | 1518 | 1.4 |

millifaersla | millifaersla | 1.4c, Selection Only | pick the smallest among the three | 939 | 1.2 |

moscowdream | moscowdream | 1.4c, Selection Only | if-else; 2 cases; check n ≥ 3 | 443 | 1.7 |

onechicken | onechicken | 1.4c, Selection Only | if-else if-else; 4 cases (piece vs pieces) | 3014 | 1.6 |

provincesandgold | provincesandgold | 1.4c, Selection Only | if-else if-else; 6 cases | 1779 | 1.4 |

quadrant | quadrant | 1.4c, Selection Only | if-else if-else; 4 cases | 13625 | 1.3 |

sith | sith | 1.4c, Selection Only | 3 cases | 524 | 1.5 |

sorttwonumbers | sorttwonumbers | 1.4c, Selection Only | swap a and b if a > b | 1313 | 1.4 |

stafur | stafur | 1.4c, Selection Only | 3 cases; be-careful with 'Y' | 349 | 1.6 |

temperature | temperature | 1.4c, Selection Only | if-else if-else; 3 cases; derive formula | 685 | 2.2 |

testdrive | testdrive | 1.4c, Selection Only | if-else; 4 cases | 130 | 2.5 |

undeadoralive | undeadoralive | 1.4c, Selection Only | 4 cases | 1905 | 1.5 |

vajningsplikt | vajningsplikt | 1.4c, Selection Only | selection; multiple cases; be careful | 114 | 1.8 |

whichisgreater | whichisgreater | 1.4c, Selection Only | if-else; 2 cases | 2253 | 1.3 |

astrologicalsign | astrologicalsign | 1.4d, Multiple TC + Selection | 12 cases (Capricorn is a bit different) | 226 | 1.6 |

eligibility | eligibility | 1.4d, Multiple TC + Selection | 3 cases | 1741 | 1.6 |

helpaphd | helpaphd | 1.4d, Multiple TC + Selection | 2 cases | 2044 | 1.6 |

leftbeehind | leftbeehind | 1.4d, Multiple TC + Selection | 4 cases | 2014 | 1.6 |

lessvsfewer | lessvsfewer | 1.4d, Multiple TC + Selection | case analysis; multiple test cases | 375 | 2.1 |

nastyhacks | nastyhacks | 1.4d, Multiple TC + Selection | 3 cases | 6308 | 1.3 |

numberfun | numberfun | 1.4d, Multiple TC + Selection | 2 cases (out of 6 combinations; addition/multiplication are commutative); remember integer division | 3436 | 1.4 |

oddities | oddities | 1.4d, Multiple TC + Selection | 2 cases | 11523 | 1.3 |

vedurheidar | vedurheidar | 1.4d, Multiple TC + Selection | simple selection over n test cases | 809 | 1.4 |

babybites | babybites | 1.4e, Control Flow | easy simulation | 1624 | 1.7 |

basketballoneonone | basketballoneonone | 1.4e, Control Flow | linear pass | 957 | 1.6 |

cinema2 | cinema2 | 1.4e, Control Flow | just a small variation from Kattis - cinema | 181 | 1.8 |

cold | cold | 1.4e, Control Flow | linear pass; array not really needed | 12609 | 1.3 |

divvyingup | divvyingup | 1.4e, Control Flow | sum; simple if-else | 406 | 1.6 |

earlywinter | earlywinter | 1.4e, Control Flow | linear pass | 543 | 1.9 |

electionparadox | electionparadox | 1.4e, Control Flow | simple control flow | 212 | 1.9 |

fadingwind | fadingwind | 1.4e, Control Flow | just code as instructed | 866 | 1.5 |

fizzbuzz | fizzbuzz | 1.4e, Control Flow | actually just about easy divisibility properties | 10274 | 1.3 |

goombastacks | goombastacks | 1.4e, Control Flow | just stack all the goombas and check | 437 | 1.5 |

isyavowel | isyavowel | 1.4e, Control Flow | count the occurrences of 'aeiou' vs 'aeiouy' in the input | 735 | 1.2 |

jobexpenses | jobexpenses | 1.4e, Control Flow | simple loop | 1427 | 1.4 |

licensetolaunch | licensetolaunch | 1.4e, Control Flow | easy linear pass | 1969 | 1.4 |

oddecho | oddecho | 1.4e, Control Flow | just do as asked | 1466 | 1.3 |

oddgnome | oddgnome | 1.4e, Control Flow | linear pass | 2388 | 1.6 |

offworldrecords | offworldrecords | 1.4e, Control Flow | check as required | 150 | 1.8 |

overdraft | overdraft | 1.4e, Control Flow | find the lowest balance over all n transactions | 356 | 1.7 |

skammstofun | skammstofun | 1.4e, Control Flow | take first character of each word if it is in Uppercase | 360 | 1.5 |

skruop | skruop | 1.4e, Control Flow | simple control flow | 254 | 1.5 |

smil | smil | 1.4e, Control Flow | simple loop; test up to 4 patterns | 1081 | 1.4 |

sottkvi | sottkvi | 1.4e, Control Flow | simple control flow | 404 | 1.5 |

speeding | speeding | 1.4e, Control Flow | just loop; keep the running max | 84 | 1.4 |

speedlimit | speedlimit | 1.4e, Control Flow | standard simulation problem | 7164 | 1.4 |

spritt | spritt | 1.4e, Control Flow | simple loop and selection | 1415 | 1.4 |

stararrangements | stararrangements | 1.4e, Control Flow | one loop | 1637 | 1.4 |

statistics | statistics | 1.4e, Control Flow | one pass; array not needed | 2942 | 1.7 |

tornbygge | tornbygge | 1.4e, Control Flow | linear pass | 272 | 1.8 |

vedurvindhradi | vedurvindhradi | 1.4e, Control Flow | 13 cases; easier to check with array and loop | 316 | 1.6 |

zanzibar | zanzibar | 1.4e, Control Flow | one pass; array not needed | 2308 | 1.5 |

abc | abc | 1.4f, Function | sort 3 numbers into ABC; then print output as needed | 5282 | 1.8 |

arithmeticfunctions | arithmeticfunctions | 1.4f, Function | implement the three functions as asked | 140 | 1.7 |

artichoke | artichoke | 1.4f, Function | LA 7150 - WorldFinals Marrakech15; linear scan; probably one of the easiest WorldFinals problem; also available at UVa 0... | 1390 | 2.8 |

chugging | chugging | 1.4f, Function | abstract the computation of drinking time as function; compute for Alice and for Bob; decide accordingly | 211 | 1.6 |

combinationlock | combinationlock | 1.4f, Function | simple; do as asked; also available at UVa 10550 - Combination Lock | 633 | 2.5 |

digits | digits | 1.4f, Function | direct simulation; also available at UVa 11687 - Digits | 214 | 3.5 |

filip | filip | 1.4f, Function | create a 'reverse string' function; then if-else check | 6345 | 1.3 |

logicfunctions | logicfunctions | 1.4f, Function | implement the three simple logical Boolean operations | 62 | 2.5 |

mia | mia | 1.4f, Function | just if-else check | 1136 | 2.1 |

sifferprodukt | sifferprodukt | 1.4f, Function | easy digit product function | 460 | 1.5 |

socialdistancing2 | socialdistancing2 | 1.4f, Function | 1D Boolean array of occupied seats; find 3 adjacent empty seats | 188 | 1.9 |

treasurehunt | treasurehunt | 1.4f, Function | simple simulation on 2D grid | 1006 | 2.6 |

acm | acm | 1.4g, 1D Array, Easier | simple simulation; one pass | 3526 | 1.5 |

atlogur | atlogur | 1.4g, 1D Array, Easier | easy simulation; use 2 arrays or 1 array of pairs | 134 | 2.4 |

cetiri | cetiri | 1.4g, 1D Array, Easier | sort 3 number helps; 3 cases | 1165 | 1.9 |

coffeecupcombo | coffeecupcombo | 1.4g, 1D Array, Easier | greedily purchase two cups; drop unnecessary cups later to maximize awake time | 849 | 1.6 |

cutinline | cutinline | 1.4g, 1D Array, Easier | a simple list ADT problem (small N) | 96 | 2.2 |

cyaniderivers | cyaniderivers | 1.4g, 1D Array, Easier | find longest consecutive 0s; divide by 2 | 146 | 2.3 |

finalexam2 | finalexam2 | 1.4g, 1D Array, Easier | compare array with itself (but shifted by one index) | 378 | 1.3 |

forcedchoice | forcedchoice | 1.4g, 1D Array, Easier | simple in-small-array test | 205 | 1.3 |

hothike | hothike | 1.4g, 1D Array, Easier | one pass; using array helps a bit | 835 | 1.7 |

kcuddlanod | kcuddlanod | 1.4g, 1D Array, Easier | reverse a string (char array); replace 2 and 5; compare | 156 | 1.9 |

lineup | lineup | 1.4g, 1D Array, Easier | sort ascending/descending and compare | 3703 | 1.6 |

lostlineup | lostlineup | 1.4g, 1D Array, Easier | simple 1D array manipulation | 550 | 1.5 |

meanwords | meanwords | 1.4g, 1D Array, Easier | use array of strings | 403 | 1.7 |

ofugsnuid | ofugsnuid | 1.4g, 1D Array, Easier | simple list reversal problem; one liner with Python | 636 | 1.4 |

pokechat | pokechat | 1.4g, 1D Array, Easier | 1D array indexing | 946 | 1.4 |

stickykeys | stickykeys | 1.4g, 1D Array, Easier | one pass check on an array of characters | 1001 | 1.5 |

trainboarding | trainboarding | 1.4g, 1D Array, Easier | simulation with arrays | 58 | 3.0 |

ullendullendoff | ullendullendoff | 1.4g, 1D Array, Easier | array; extract the required index | 420 | 1.6 |

vaccineefficacy | vaccineefficacy | 1.4g, 1D Array, Easier | use small arrays; just compute as described | 102 | 2.6 |

vectorfunctions | vectorfunctions | 1.4g, 1D Array, Easier | a good tutorial problem involving C++ std::vector functions | 70 | 2.1 |

vefthjonatjon | vefthjonatjon | 1.4g, 1D Array, Easier | use counter array of size 3; loop; find min | 908 | 1.6 |

zoom | zoom | 1.4g, 1D Array, Easier | store in 1D array; access indices that are multiples of k | 302 | 1.6 |

armystrengtheasy | armystrengtheasy | 1.4h, Easy | also see Kattis - armystrengthhard | 1585 | 2.1 |

armystrengthhard | armystrengthhard | 1.4h, Easy | also see Kattis - armystrengtheasy; re-read the problem statement several times to unveil a trivial solution | 1466 | 2.2 |

batterup | batterup | 1.4h, Easy | easy one loop | 4542 | 1.3 |

brokenswords | brokenswords | 1.4h, Easy | easy counting problem | 367 | 1.7 |

cinema | cinema | 1.4h, Easy | easy simulation | 129 | 2.6 |

dontfalldownstairs | dontfalldownstairs | 1.4h, Easy | easy linear pass check | 114 | 2.2 |

doublepassword | doublepassword | 1.4h, Easy | two to the power of number of different digits | 608 | 1.4 |

drinkingsong | drinkingsong | 1.4h, Easy | just one loop; but be careful of with the grammar | 336 | 2.4 |

endurvinnsla | endurvinnsla | 1.4h, Easy | just count 'ekki plast' and compute the answer | 136 | 2.2 |

espresso | espresso | 1.4h, Easy | simple control flow | 187 | 1.7 |

findingana | findingana | 1.4h, Easy | simple string search/find operation | 424 | 1.3 |

hangingout | hangingout | 1.4h, Easy | simple loop | 2218 | 1.3 |

haughtycuisine | haughtycuisine | 1.4h, Easy | just remember the last one | 390 | 1.6 |

hissingmicrophone | hissingmicrophone | 1.4h, Easy | simple loop | 7690 | 1.3 |

methodicmultiplication | methodicmultiplication | 1.4h, Easy | reading comprehension; very easy answer | 381 | 1.6 |

mosquito | mosquito | 1.4h, Easy | direct simulation | 822 | 1.9 |

mult | mult | 1.4h, Easy | simple control flow | 701 | 1.6 |

nop | nop | 1.4h, Easy | one loop; simply count and modify distances between two UPPERCASE characters | 94 | 2.1 |

pokerhand | pokerhand | 1.4h, Easy | frequency count; report max | 2173 | 1.4 |

ptice | ptice | 1.4h, Easy | just a simple simulation | 2100 | 1.5 |

pubrunda | pubrunda | 1.4h, Easy | just check as asked; linear pass | 105 | 2.1 |

scalingrecipe | scalingrecipe | 1.4h, Easy | apply math scaling formula with loop; be careful of precision issue | 229 | 1.6 |

sevenwonders | sevenwonders | 1.4h, Easy | one pass | 4776 | 1.4 |

spellingbee | spellingbee | 1.4h, Easy | trivial; just do as asked; string property checks | 17 | 3.2 |

stopwatch | stopwatch | 1.4h, Easy | linear pass; simulation | 390 | 1.3 |

volim | volim | 1.4h, Easy | simple simulation | 1855 | 1.7 |

waterjournal | waterjournal | 1.4h, Easy | check if a and/or b are/is seen in the log and decide the output accordingly | 577 | 1.7 |

yinyangstones | yinyangstones | 1.4h, Easy | trick question; just check if number of whites equals to number of blacks | 1365 | 1.8 |

architecture | architecture | 1.4i, Still Easy | 2D array problem with an easy two 1D arrays solution | 78 | 2.7 |

bossbattle | bossbattle | 1.4i, Still Easy | trick question | 1391 | 1.8 |

boundingrobots | boundingrobots | 1.4i, Still Easy | maintain separate variables | 1141 | 1.6 |

brokencalculator | brokencalculator | 1.4i, Still Easy | trivial; just do as asked | 13 | 3.7 |

bubbletea | bubbletea | 1.4i, Still Easy | simple simulation | 806 | 2.2 |

driversdilemma | driversdilemma | 1.4i, Still Easy | only 6 different cases; note that starting fuel is C/2 | 200 | 2.0 |

eventplanning | eventplanning | 1.4i, Still Easy | just simulate; 2D loop | 458 | 2.0 |

exactlyelectrical | exactlyelectrical | 1.4i, Still Easy | Manhattan distance; waste energy at the end by moving 1 cell around target | 469 | 2.0 |

eyeofsauron | eyeofsauron | 1.4i, Still Easy | simple string check | 998 | 1.3 |

flipflow | flipflow | 1.4i, Still Easy | simulation | 222 | 2.1 |

fromatob | fromatob | 1.4i, Still Easy | we can only go up via (a bunch of) +1 move(s); we can only go down via (an optional +1 move to make even) and then divid... | 44 | 3.1 |

ghostleg | ghostleg | 1.4i, Still Easy | 1D array; simulation | 772 | 1.4 |

guillaume | guillaume | 1.4i, Still Easy | Scan from the back; avoid division by 0 | 73 | 3.3 |

makingameowth | makingameowth | 1.4i, Still Easy | tricky simulation | 474 | 1.6 |

missingnumbers | missingnumbers | 1.4i, Still Easy | two linear loops; use a small array of Booleans | 1622 | 1.7 |

peasoup | peasoup | 1.4i, Still Easy | one linear pass | 771 | 2.4 |

prerequisites | prerequisites | 1.4i, Still Easy | process the requirements as the input is read; also available at UVa 10919 - Prerequisites? | 284 | 1.9 |

pyramids | pyramids | 1.4i, Still Easy | find the simple pattern to construct a pyramid of a certain height | 459 | 1.5 |

sok | sok | 1.4i, Still Easy | case analysis | 750 | 1.7 |

spacerace | spacerace | 1.4i, Still Easy | easy control flow | 140 | 2.2 |

thanos | thanos | 1.4i, Still Easy | simple simulation; R is at least 2 | 335 | 3.2 |

vote | vote | 1.4i, Still Easy | follow the requirements | 1584 | 2.2 |

anotherbrick | anotherbrick | 1.4j, Medium | simple simulation | 1424 | 1.9 |

babypanda | babypanda | 1.4j, Medium | think backwards from m back to 0; n is not needed | 338 | 2.2 |

basicprogramming1 | basicprogramming1 | 1.4j, Medium | a nice summative problem for programming examination of a basic programming methodology course | 201 | 4.0 |

battlesimulation | battlesimulation | 1.4j, Medium | one pass; special check on 3! = 6 possible combinations of 3 combo moves | 900 | 2.8 |

beekeeper | beekeeper | 1.4j, Medium | single loop; be careful that vowel set here includes 'y' | 1025 | 2.7 |

bitsequalizer | bitsequalizer | 1.4j, Medium | analyzing patterns; also available at UVa 12545 - Bits Equalizer | 174 | 4.5 |

bottledup | bottledup | 1.4j, Medium | find integer a and b so that a*v1 + b*v2 == s; single loop | 637 | 2.6 |

carousel | carousel | 1.4j, Medium | single loop; keep best; skip a > m | 335 | 2.8 |

climbingstairs | climbingstairs | 1.4j, Medium | observation: go to office (k), go to registration desk (r), go up/down 1 floor until you reach n steps, go home; repetit... | 210 | 4.1 |

climbingworm | climbingworm | 1.4j, Medium | simulation; similar with UVa 00573 - The Snail | 222 | 2.4 |

codecleanups | codecleanups | 1.4j, Medium | a bit tricky | 515 | 2.4 |

cowcrane | cowcrane | 1.4j, Medium | reading comprehension; case analysis; eventually there are only 4 possible cases | 181 | 3.9 |

deathtaxes | deathtaxes | 1.4j, Medium | direct simulation; a bit of reading comprehension | 179 | 3.3 |

fastfood | fastfood | 1.4j, Medium | eventually just one pass due to the constraints | 330 | 2.2 |

fizzbuzz2 | fizzbuzz2 | 1.4j, Medium | divisibility properties; very similar to Kattis - fizzbuzz | 212 | 2.7 |

howl | howl | 1.4j, Medium | simply extend the input by one correct character; case analysis exercise | 288 | 1.8 |

shatteredcake | shatteredcake | 1.4j, Medium | sum the area of the pieces and relate it with L*W | 957 | 1.6 |

utf8 | utf8 | 1.4j, Medium | parsing; prefix checks | 65 | 2.5 |

warringscoring | warringscoring | 1.4j, Medium | just do as asked; 1D array manipulation | 193 | 3.2 |

bela | bela | 1.6a, Game (Card) | simple card scoring problem | 3731 | 1.3 |

karte | karte | 1.6a, Game (Card) | simple | 1600 | 1.7 |

memorymatch | memorymatch | 1.6a, Game (Card) | interesting simulation game; many corner cases | 161 | 4.0 |

shuffling | shuffling | 1.6a, Game (Card) | simulate card shuffling operation | 218 | 2.8 |

bijele | bijele | 1.6b, Game (Chess) | super simple | 10381 | 1.4 |

checkmateinone | checkmateinone | 1.6b, Game (Chess) | case analysis; only move rook once; cannot jump over own King; do not move rook to position that can be attacked by the ... | 191 | 4.5 |

chess | chess | 1.6b, Game (Chess) | bishop movements; either impossible, 0, 1, or 2 ways - one of this can be invalid; just use brute force | 856 | 2.9 |

empleh | empleh | 1.6b, Game (Chess) | the reverse problem of Kattis - helpme | 245 | 1.8 |

helpme | helpme | 1.6b, Game (Chess) | convert the given chess board into chess notation | 302 | 2.4 |

hexagonalrooks | hexagonalrooks | 1.6b, Game (Chess) | count number of two consecutive rook movements on hexagonal grid; try all possible 91 (intermediate) cells after simplif... | 18 | 3.2 |

connectthedots | connectthedots | 1.6c, Game (Others), Easier | classic children game; output formatting | 213 | 3.6 |

gamerank | gamerank | 1.6c, Game (Others), Easier | simulate the ranking update process | 732 | 3.9 |

guessinggame | guessinggame | 1.6c, Game (Others), Easier | use a 1D flag array; also available at UVa 10530 - Guessing Game | 684 | 2.7 |

pvbg | pvbg | 1.6c, Game (Others), Easier | find min plus 1 | 727 | 1.8 |

trik | trik | 1.6c, Game (Others), Easier | simple simulation game | 7191 | 1.4 |

battleship | battleship | 1.6d, Game (Others), Harder | simulation; reading comprehension; many corner cases | 120 | 5.4 |

matchgame | matchgame | 1.6d, Game (Others), Harder | two cases for yes: 1 (sample 2) or 2 digits (sample 2) difference; no for 3 digits differences; be careful for cases lik... | 204 | 4.6 |

rockpaperscissors | rockpaperscissors | 1.6d, Game (Others), Harder | count wins and losses; output win average; also available at UVa 10903 - Rock-Paper-Scissors ... | 820 | 3.7 |

rockscissorspaper | rockscissorspaper | 1.6d, Game (Others), Harder | 2D arrays manipulation; also available at UVa 10443 - Rock, Scissors, Paper | 153 | 4.8 |

tictactoe2 | tictactoe2 | 1.6d, Game (Others), Harder | check validity of Tic Tac Toe game; tricky; also available at UVa 10363 - Tic Tac Toe | 167 | 5.3 |

turtlemaster | turtlemaster | 1.6d, Game (Others), Harder | interesting board game to teach programming for children; simulation | 323 | 2.9 |

attendance2 | attendance2 | 1.6e, Real Life, Easier | we frequently encounter this problem in real-life | 220 | 1.9 |

calories | calories | 1.6e, Real Life, Easier | are you concerned with your weights?; also available at UVa 10554 - Calories from Fat | 328 | 2.0 |

chopin | chopin | 1.6e, Real Life, Easier | you can learn a bit of music with this problem | 823 | 1.8 |

compass | compass | 1.6e, Real Life, Easier | your typical smartphone's compass function usually has this small feature | 1529 | 2.0 |

cornhusker | cornhusker | 1.6e, Real Life, Easier | do the estimation as explained | 365 | 1.5 |

cprnummer | cprnummer | 1.6e, Real Life, Easier | just do the check as described | 197 | 1.5 |

fbiuniversal | fbiuniversal | 1.6e, Real Life, Easier | a bit of base number conversion; base 27 to base 10, if valid | 369 | 2.2 |

heartrate | heartrate | 1.6e, Real Life, Easier | real life problem | 3205 | 1.3 |

measurement | measurement | 1.6e, Real Life, Easier | going down: multiply; going up: divide | 641 | 2.0 |

parking | parking | 1.6e, Real Life, Easier | a possible real life application; simple loops and if-statements are enough to solve this problem | 1523 | 1.6 |

trainpassengers | trainpassengers | 1.6e, Real Life, Easier | create a verifier; be careful of corner cases | 1807 | 2.1 |

transitwoes | transitwoes | 1.6e, Real Life, Easier | a possible real life scenario; simulate as asked | 353 | 1.3 |

wertyu | wertyu | 1.6e, Real Life, Easier | use 2D mapper array to simplify the problem; also available at UVa 10082 - WERTYU | 768 | 2.9 |

beatspread | beatspread | 1.6f, Real Life, Medium | be careful with boundary cases!; also available at UVa 10812 - Beat the Spread | 980 | 2.4 |

dodecaphony | dodecaphony | 1.6f, Real Life, Medium | music lesson; do as asked | 98 | 3.2 |

luhnchecksum | luhnchecksum | 1.6f, Real Life, Medium | very similar (~95%) to UVa 11743 | 836 | 1.6 |

musicalscales | musicalscales | 1.6f, Real Life, Medium | music lesson; use array(s) to help simplify the code | 674 | 1.6 |

recipes | recipes | 1.6f, Real Life, Medium | real life problem for a cook; just simulate the requirements | 731 | 1.8 |

score | score | 1.6f, Real Life, Medium | medium difficulty; do as asked; just be careful | 173 | 3.5 |

streamlag | streamlag | 1.6f, Real Life, Medium | easier if we compute the required lag in offline mode, i.e., read all the packet arrival times upfront | 188 | 3.1 |

toilet | toilet | 1.6f, Real Life, Medium | simulation; be careful of corner cases | 1756 | 2.4 |

wordcloud | wordcloud | 1.6f, Real Life, Medium | just a simulation; but be careful of corner cases | 322 | 2.4 |

workingfromhome | workingfromhome | 1.6f, Real Life, Medium | contextual COVID-19 pandemic-related situation; just simulate the requirement | 236 | 4.5 |

bungeejumping | bungeejumping | 1.6g, Real Life, Harder | real life Physics simulation; need someone who is good with Physics to understand the problem and derive the required fo... | 64 | 4.8 |

creditcard | creditcard | 1.6g, Real Life, Harder | real life issue; precision error issue if we do not convert double (with just 2 digits after decimal point) into long lo... | 123 | 6.3 |

demeritpoints | demeritpoints | 1.6g, Real Life, Harder | real-life; harder; multiple corner cases | 63 | 6.5 |

saxophone | saxophone | 1.6g, Real Life, Harder | about musical instruments; also available at UVa 10415 - Eb Alto Saxophone Player | 268 | 2.4 |

tenis | tenis | 1.6g, Real Life, Harder | Tennis scoring rules; tricky test cases; be careful | 78 | 5.0 |

touchscreenkeyboard | touchscreenkeyboard | 1.6g, Real Life, Harder | follow the requirements; sort | 636 | 1.9 |

workout | workout | 1.6g, Real Life, Harder | gym simulation; use 1D arrays to help you simulate the time quickly | 151 | 5.7 |

countingdays | countingdays | 1.6h, Time, Easier | computing number of elapsed days via black-box functions | 64 | 2.6 |

datum | datum | 1.6h, Time, Easier | Java GregorianCalendar, DAY_OF_WEEK | 3019 | 1.4 |

friday | friday | 1.6h, Time, Easier | the answer depends on the start day of the month | 1059 | 1.9 |

justaminute | justaminute | 1.6h, Time, Easier | linear pass; total seconds/(total minutes*60) | 1512 | 1.7 |

klockan2 | klockan2 | 1.6h, Time, Easier | try all 24*60 possibilities | 208 | 1.8 |

marswindow | marswindow | 1.6h, Time, Easier | simple advancing of year and month by 26 months or 2 years+2 months each; direct formula exists | 830 | 2.0 |

parentgap | parentgap | 1.6h, Time, Easier | difference of two specific Sundays | 336 | 2.3 |

savingdaylight | savingdaylight | 1.6h, Time, Easier | convert hh:mm to minute; compute difference of ending and starting; then convert minute to hh:mm again | 986 | 2.1 |

spavanac | spavanac | 1.6h, Time, Easier | convert hh:mm to minute, reduce by 45 minutes, then convert minute to hh:mm again | 8877 | 1.4 |

bestbefore | bestbefore | 1.6i, Time, Harder | tedious; 3! = 6 possibilities to check | 148 | 4.0 |

birthdayboy | birthdayboy | 1.6i, Time, Harder | convert mm-dd into [0..364]; use DAT; find largest gap via brute force | 108 | 4.6 |

busyschedule | busyschedule | 1.6i, Time, Harder | sort the time; be careful of corner cases | 811 | 2.4 |

dst | dst | 1.6i, Time, Harder | straightforward; modulo | 611 | 2.1 |

natrij | natrij | 1.6i, Time, Harder | convert hh:mm:ss to seconds; make sure the second time is larger than the first time; corner case: 24:00:00 | 1136 | 2.6 |

semafori | semafori | 1.6i, Time, Harder | simple simulation | 724 | 2.0 |

tgif | tgif | 1.6i, Time, Harder | given the day of 1 Jan of an unspecified year, find the DAY_OF_WEEK of another day of that year; use Java GregorianCalen... | 82 | 3.2 |

timezones | timezones | 1.6i, Time, Harder | follow the description, tedious; also available at UVa 10371 - Time Zones | 67 | 5.3 |

convertingromans | convertingromans | 1.6j, Roman Numerals | Roman numbers variant; important: ``subtract any digit written to the left of a larger digit, even if they are not direc... | 274 | 2.9 |

rimski | rimski | 1.6j, Roman Numerals | to Roman/to Decimal conversion problem; use next permutation to be sure | 118 | 4.5 |

romanholidays | romanholidays | 1.6j, Roman Numerals | generate and sort the first 1K Roman strings; ''M'' is at index 945; append prefix 'M' for numbers larger than 1K | 92 | 3.6 |

conundrum | conundrum | 1.6k, Cipher, Easier | simple cipher | 5240 | 1.4 |

cypherdecypher | cypherdecypher | 1.6k, Cipher, Easier | encrypt n messages as requested | 169 | 1.7 |

drmmessages | drmmessages | 1.6k, Cipher, Easier | simple decrypt; follow instruction | 1949 | 1.6 |

drunkvigenere | drunkvigenere | 1.6k, Cipher, Easier | simple decrypt; reverse the given instruction | 189 | 1.5 |

encodedmessage | encodedmessage | 1.6k, Cipher, Easier | simple 2D grid cipher | 2316 | 1.4 |

kemija08 | kemija08 | 1.6k, Cipher, Easier | simple vowel checks | 3070 | 1.4 |

keytocrypto | keytocrypto | 1.6k, Cipher, Easier | simple decrypt | 1029 | 1.7 |

reverserot | reverserot | 1.6k, Cipher, Easier | simple cipher | 2641 | 1.7 |

runlengthencodingrun | runlengthencodingrun | 1.6k, Cipher, Easier | encode and decode | 1929 | 1.7 |

t9spelling | t9spelling | 1.6k, Cipher, Easier | similar to (the reverse of) UVa 12896 | 2425 | 1.7 |

anewalphabet | anewalphabet | 1.6l, Cipher, Medium | simple cipher; 26 characters | 4154 | 1.8 |

falsesecurity | falsesecurity | 1.6l, Cipher, Medium | a bit tedious decoder problem | 948 | 1.6 |

keylogger | keylogger | 1.6l, Cipher, Medium | cipher problem; map sound to index; see sample input 1 | 227 | 2.3 |

permcode | permcode | 1.6l, Cipher, Medium | reading comprehension problem | 166 | 2.2 |

piglatin | piglatin | 1.6l, Cipher, Medium | simple; check the vowels that include 'y' and process it | 916 | 2.1 |

secretmessage | secretmessage | 1.6l, Cipher, Medium | just do as asked; use 2D grid | 2866 | 1.7 |

tajna | tajna | 1.6l, Cipher, Medium | simple 2D grid cipher | 471 | 2.1 |

autori | autori | 1.6m, Input Parsing (Iter) | simple string tokenizer problem | 11602 | 1.2 |

bannord | bannord | 1.6m, Input Parsing (Iter) | parse the input against set of forbidden characters | 601 | 1.7 |

genealogical | genealogical | 1.6m, Input Parsing (Iter) | iterative parser; need to be careful when trimming the tokens; do not print new line as the last line; otherwise this is... | 77 | 3.5 |

headguard | headguard | 1.6m, Input Parsing (Iter) | run length encoding | 164 | 2.0 |

liquidassets | liquidassets | 1.6m, Input Parsing (Iter) | iterative parsing; process the two rules one after another | 274 | 3.4 |

mumblerap | mumblerap | 1.6m, Input Parsing (Iter) | find the largest integer in the string | 597 | 1.7 |

pervasiveheartmonitor | pervasiveheartmonitor | 1.6m, Input Parsing (Iter) | simple parsing; then finding average | 950 | 1.7 |

screen | screen | 1.6m, Input Parsing (Iter) | there are lots of simplifying specifications that makes this problem doable, especially with Python eval(expression) | 39 | 3.5 |

timebomb | timebomb | 1.6m, Input Parsing (Iter) | just a tedious input parsing problem; divisibility by 6 | 1174 | 1.8 |

tripletexting | tripletexting | 1.6m, Input Parsing (Iter) | print characters that appear at least two times out of three | 56 | 1.8 |

asciikassi | asciikassi | 1.6n, Output Formatting, E | ASCII art; create 2D grid as per requirement | 478 | 1.5 |

display | display | 1.6n, Output Formatting, E | unordered_map; map a digit -> enlarged 7x5 version | 635 | 2.5 |

krizaljka | krizaljka | 1.6n, Output Formatting, E | simple 2D character array formatting | 483 | 1.8 |

mirror | mirror | 1.6n, Output Formatting, E | simple 2D character array formatting | 1757 | 1.7 |

mrcodeformatgrader | mrcodeformatgrader | 1.6n, Output Formatting, E | tedious output formatting | 441 | 2.0 |

multiplication | multiplication | 1.6n, Output Formatting, E | tedious time waster output formatting problem | 162 | 2.2 |

musicalnotation | musicalnotation | 1.6n, Output Formatting, E | simple but tedious | 421 | 2.0 |

okvir | okvir | 1.6n, Output Formatting, E | simple 2D output formatting problem | 399 | 2.0 |

okviri | okviri | 1.6n, Output Formatting, E | use 2D array to simplify the process | 447 | 1.9 |

skener | skener | 1.6n, Output Formatting, E | enlarging 2D character array | 2067 | 1.5 |

ultimatebinarywatch | ultimatebinarywatch | 1.6n, Output Formatting, E | simple 2D output formatting problem; 4 vertical bitmasks | 205 | 1.4 |

asciiaddition | asciiaddition | 1.6o, Time Waster, Easier | a+b problem in text format; total gimmick; time waster | 509 | 1.9 |

averagespeed | averagespeed | 1.6o, Time Waster, Easier | distance = speed*time elapsed; also available at UVa 10281 - Average Speed | 322 | 3.7 |

bluetooth | bluetooth | 1.6o, Time Waster, Easier | input parsing; check many subcases | 318 | 1.9 |

gerrymandering | gerrymandering | 1.6o, Time Waster, Easier | just a reading comprehension problem; do as asked | 1187 | 1.4 |

glitchbot | glitchbot | 1.6o, Time Waster, Easier | time waster; O(n^2) simulation; do not output more than one possible answer | 1036 | 2.0 |

pachydermpeanutpacking | pachydermpeanutpacking | 1.6o, Time Waster, Easier | time waster; simple one loop simulation | 322 | 1.9 |

printingcosts | printingcosts | 1.6o, Time Waster, Easier | clear time waster; the hard part is in parsing the costs of each character in the problem description | 705 | 2.2 |

froggie | froggie | 1.6p, Time Waster, Harder | just a simulation; but many corner cases; S can be 0 | 296 | 6.8 |

functionalfun | functionalfun | 1.6p, Time Waster, Harder | just follow the description; 5 cases; tedious parsing problem; requires a kind of mapper | 487 | 1.9 |

interpreter | interpreter | 1.6p, Time Waster, Harder | need careful implementation; just follow the instruction | 224 | 3.7 |

lumbercraft | lumbercraft | 1.6p, Time Waster, Harder | time waster; 2D grid simulation | 69 | 5.0 |

sabor | sabor | 1.6p, Time Waster, Harder | ad hoc; hard simulation; analyze that the simulation terminates | 53 | 5.2 |

touchdown | touchdown | 1.6p, Time Waster, Harder | time waster; reading comprehension; several corner cases | 114 | 3.6 |

windows | windows | 1.6p, Time Waster, Harder | LA 7162 - WorldFinals Marrakech15; tedious simulation problem; also available at UVa 01721 - Window Manager | 92 | 7.6 |

baloni | baloni | 2.2a, 1D Array, Medium | clever use of 1D histogram array to decompose the shots as per requirement | 689 | 3.5 |

downtime | downtime | 2.2a, 1D Array, Medium | 1D array; use Fenwick Tree-like operation for Range Update Point Query | 1068 | 3.2 |

erase | erase | 2.2a, 1D Array, Medium | if N is odd, the second line has to be the inverse of the first; if N is even, both lines have to be the same | 2166 | 1.6 |

fluortanten | fluortanten | 2.2a, 1D Array, Medium | remove Bjorn first; then do O(n) pass to check where is Bjorn's optimal position | 181 | 3.1 |

greedilyincreasing | greedilyincreasing | 2.2a, 1D Array, Medium | just 1D array manipulation; this is not the DP-LIS problem | 1151 | 1.9 |

jollyjumpers | jollyjumpers | 2.2a, 1D Array, Medium | 1D Boolean flags to check [1..n-1]; also available at UVa 10038 - Jolly Jumpers | 413 | 3.4 |

rankproblem | rankproblem | 2.2a, 1D Array, Medium | list (array) manipulation problem | 120 | 2.8 |

trackingshares | trackingshares | 2.2a, 1D Array, Medium | keep track of the shares in small arrays and simulate | 73 | 2.2 |

astro | astro | 2.2b, 1D Array, Harder | use large Boolean array | 115 | 4.3 |

charged | charged | 2.2b, 1D Array, Harder | convoluted problem statement; ignore E and F; for each cell, compute sum of Vs using rx/ry; convert the value of each ce... | 61 | 1.8 |

crashingrobots | crashingrobots | 2.2b, 1D Array, Harder | just simulate the x/y/direction of the N robots | 107 | 4.6 |

divideby100 | divideby100 | 2.2b, 1D Array, Harder | big 1D character array processing; be careful | 557 | 4.2 |

flippingpatties | flippingpatties | 2.2b, 1D Array, Harder | use 1D int array of size 43 201; at each time t, we need one cook (hand) at time t-2d (to start), t-d (to flip), ... | 116 | 2.4 |

inverteddeck | inverteddeck | 2.2b, 1D Array, Harder | can we sort the array with just one contiguous swap?; compress duplicates; use sentinel so that we only check /&bsol... | 203 | 3.7 |

keypad | keypad | 2.2b, 1D Array, Harder | 2D array manipulation | 200 | 3.3 |

mastermind | mastermind | 2.2b, 1D Array, Harder | 1D array manipulation to count r and s | 446 | 2.4 |

physicalmusic | physicalmusic | 2.2b, 1D Array, Harder | a reading comprehension problem to come up with a simple algorithm to determine the answer | 168 | 5.5 |

piperotation | piperotation | 2.2b, 1D Array, Harder | use 1D Boolean array to check if cell (r, c) needs to be connected from the top (r-1) or left (c-1) and pass information... | 50 | 2.6 |

pivot | pivot | 2.2b, 1D Array, Harder | static range min/max query problem; special condition allows this problem to be solvable in O(n) using help of 1D arrays | 1723 | 3.2 |

queens | queens | 2.2b, 1D Array, Harder | simple N queens verifier program; use several 1D Boolean arrays to help do this check in O(N) | 725 | 3.3 |

rockband | rockband | 2.2b, 1D Array, Harder | interesting usage of 1D array to simplify the solution; a bit of sorting to arrange the output | 194 | 3.9 |

traffic | traffic | 2.2b, 1D Array, Harder | just simulate the movement of the car for 'longer than 10^6', analyze the required bound | 233 | 4.1 |

upsanddownsofinvesting | upsanddownsofinvesting | 2.2b, 1D Array, Harder | simplify by a factor of two by realizing that peaks and valleys are symmetrical | 147 | 3.6 |

compromise | compromise | 2.2c, 2D Array, Easier | 2D array manipulation; take the majority bits of each column; output either 0 or 1 for ties | 363 | 2.2 |

epigdanceoff | epigdanceoff | 2.2c, 2D Array, Easier | count number of CCs on 2D grid; simpler solution exists: count the number of blank columns plus one | 505 | 1.9 |

fastestavailableroute | fastestavailableroute | 2.2c, 2D Array, Easier | count the number of dots in a 2D grid; scale up by a factor of s | 126 | 2.5 |

flowshop | flowshop | 2.2c, 2D Array, Easier | interesting 2D array manipulation | 392 | 2.5 |

guesswho | guesswho | 2.2c, 2D Array, Easier | 2D and 1D array; simulate and eliminate impossible candidates | 197 | 1.6 |

imageprocessing | imageprocessing | 2.2c, 2D Array, Easier | interesting 2D array manipulation | 344 | 2.1 |

laptopstickers | laptopstickers | 2.2c, 2D Array, Easier | 2D array manipulation | 318 | 2.5 |

meddelande | meddelande | 2.2c, 2D Array, Easier | simple 2D array traversal; row major; skip '.' | 122 | 1.6 |

moderatepace | moderatepace | 2.2c, 2D Array, Easier | sort each column; take the middle one | 272 | 1.6 |

mylla2 | mylla2 | 2.2c, 2D Array, Easier | simple 3x3 grid manipulation | 247 | 1.6 |

nineknights | nineknights | 2.2c, 2D Array, Easier | 2D array checks; 8 directions | 881 | 1.9 |

patchwork | patchwork | 2.2c, 2D Array, Easier | tedious 2D grid manipulation | 109 | 2.0 |

prjonamynstur | prjonamynstur | 2.2c, 2D Array, Easier | process-2d-grid-on-the-fly | 395 | 1.5 |

rulen | rulen | 2.2c, 2D Array, Easier | bitmask application; follow the instructions | 59 | 2.9 |

starbattles1 | starbattles1 | 2.2c, 2D Array, Easier | simple 2D array checks; use delta row/col technique to simplify the implementation | 189 | 3.1 |

thisaintyourgrandpascheckerboard | thisaintyourgrandpaschecke... | 2.2c, 2D Array, Easier | simple 2D array manipulation | 578 | 1.6 |

vemvinner | vemvinner | 2.2c, 2D Array, Easier | small 3x3 array checks | 408 | 2.1 |

2048 | 2048 | 2.2d, 2D Array, Harder | just a 2D array manipulation problem; utilize symmetry using 90 degrees rotation(s) to reduce 4 cases into 1 | 3150 | 2.1 |

apples | apples | 2.2d, 2D Array, Harder | 2D array manipulation; gravity simulation | 439 | 3.6 |

falcondive | falcondive | 2.2d, 2D Array, Harder | 2D array manipulation; translation vector of the Falcon | 64 | 2.8 |

flagquiz | flagquiz | 2.2d, 2D Array, Harder | array of array of strings; be careful; duplicates may exists | 167 | 3.7 |

funhouse | funhouse | 2.2d, 2D Array, Harder | 2D array manipulation; note the direction update | 700 | 2.0 |

huntthewumpus | huntthewumpus | 2.2d, 2D Array, Harder | tedious 2D array simulation | 215 | 2.2 |

prva | prva | 2.2d, 2D Array, Harder | 2D array manipulation; check vertically and horizontally | 756 | 1.7 |

rings2 | rings2 | 2.2d, 2D Array, Harder | more challenging 2D array manipulation; special output formatting style | 385 | 3.8 |

tetris | tetris | 2.2d, 2D Array, Harder | actually 3D pattern array to simulate various shape positions | 322 | 1.8 |

basicprogramming2 | basicprogramming2 | 2.2e, Sorting, Easier | a nice problem about basic sorting applications | 189 | 3.4 |

classfieldtrip | classfieldtrip | 2.2e, Sorting, Easier | just sort the characters | 1019 | 1.3 |

closingtheloop | closingtheloop | 2.2e, Sorting, Easier | sort first | 1415 | 1.6 |

cups | cups | 2.2e, Sorting, Easier | a bit of string parsing; sort | 2987 | 1.5 |

height | height | 2.2e, Sorting, Easier | insertion sort simulation | 899 | 2.0 |

judging | judging | 2.2e, Sorting, Easier | sort DOM judge and Kattis outputs; then do the O(n) merge procedure of mergesort to count common outputs | 1183 | 2.5 |

magictrick | magictrick | 2.2e, Sorting, Easier | can if all chars are unique or cannot otherwise; either sort s then check adjacent characters or use set to eliminate du... | 1605 | 1.3 |

mjehuric | mjehuric | 2.2e, Sorting, Easier | a direct simulation of a bubble sort algorithm | 1349 | 1.6 |

musicaltrees | musicaltrees | 2.2e, Sorting, Easier | sort p and t; then just simulate as asked with Boolean array | 23 | 2.8 |

nothanks | nothanks | 2.2e, Sorting, Easier | sort; then linear pass to check adjacent sorted elements | 441 | 2.4 |

sidewayssorting | sidewayssorting | 2.2e, Sorting, Easier | stable_sort or sort multi-fields of columns of a 2D array; ignore case | 857 | 2.0 |

stokigalistor | stokigalistor | 2.2e, Sorting, Easier | compare original list with its sorted version | 537 | 2.2 |

addemup | addemup | 2.2f, Sorting, Harder | create a helper function to read digits upside down; add all possibilities; sort; then use fast O(n) target pair solutio... | 338 | 4.4 |

booking | booking | 2.2f, Sorting, Harder | 2 events per booking (need room and release room); convert to minutes; be careful of leap year on 2016; sort the events;... | 164 | 5.4 |

chartingprogress | chartingprogress | 2.2f, Sorting, Harder | sort using modified comparison function (by column); transpose the input | 757 | 2.2 |

classy | classy | 2.2f, Sorting, Harder | sort using modified comparison function; a bit of string parsing/tokenization | 1633 | 4.5 |

dirtydriving | dirtydriving | 2.2f, Sorting, Harder | sort; find max - derive the formula; reading comprehension problem | 279 | 2.1 |

dyslectionary | dyslectionary | 2.2f, Sorting, Harder | sort the reverse of original string; output formatting | 775 | 3.4 |

gearchanging | gearchanging | 2.2f, Sorting, Harder | generate all O(N*M) possible gear ratios; sort; check consecutive ratios (it is ok to have duplicates) | 161 | 3.2 |

includescoring | includescoring | 2.2f, Sorting, Harder | sort; custom comparison function, tedious | 342 | 3.7 |

lawnmower | lawnmower | 2.2f, Sorting, Harder | sort and check if Guido covers all land (end-to-end and side-to-side); also available at UVa 12269 - Land Mower | 448 | 2.1 |

longswaps | longswaps | 2.2f, Sorting, Harder | observation: if k ≤ n/2, output 'Yes'; otherwise the middle chars at s[n-k..k-1] cannot move; sort s and compare the ... | 172 | 3.3 |

musicyourway | musicyourway | 2.2f, Sorting, Harder | stable_sort; custom comparison function | 404 | 2.4 |

sortofsorting | sortofsorting | 2.2f, Sorting, Harder | stable_sort or sort multi-fields | 2667 | 2.2 |

statues | statues | 2.2f, Sorting, Harder | sort distinct statue heights; test all 4 possible diagonal placements, pick the min | 106 | 2.8 |

zipfsong | zipfsong | 2.2f, Sorting, Harder | sort; custom comparison function; zipf law | 209 | 4.5 |

bread | bread | 2.2g, Special Sorting | inversion index; hard to derive | 249 | 5.0 |

excursion | excursion | 2.2g, Special Sorting | inversion index; requires O(n log n) merge sort | 387 | 4.3 |

froshweek | froshweek | 2.2g, Special Sorting | requires O(n log n) merge sort; 64-bit integer; also available at UVa 11858 - Frosh Week | 694 | 5.6 |

gamenight | gamenight | 2.2g, Special Sorting | Counting Sort is a subproblem; count frequency of A/B/Cs; complete search AA..ABB..BCC..C or AA..ACC..CBB..B | 70 | 2.8 |

mali | mali | 2.2g, Special Sorting | Counting Sort two arrays; greedy matching largest+smallest at that point | 97 | 5.1 |

sort | sort | 2.2g, Special Sorting | Counting Sort variant | 318 | 2.3 |

ultraquicksort | ultraquicksort | 2.2g, Special Sorting | requires O(n log n) merge sort; also available at UVa 10810 - Ultra Quicksort | 180 | 5.2 |

bitbybit | bitbybit | 2.2h, Bit Manipulation | be very careful with and + or corner cases | 955 | 2.9 |

bits | bits | 2.2h, Bit Manipulation | use GNU C++ __builtin_popcount | 1066 | 2.6 |

deathstar | deathstar | 2.2h, Bit Manipulation | can be solved with bit manipulation | 415 | 2.0 |

hypercube | hypercube | 2.2h, Bit Manipulation | given a gray code; we can binary search its index: upper half/first digit 0 and bottom half/first digit 1 | 376 | 3.0 |

iboard | iboard | 2.2h, Bit Manipulation | simulation; LSB to MSB; all ASCII values are 7-bits; we may need to add leading zeroes | 363 | 2.3 |

snappereasy | snappereasy | 2.2h, Bit Manipulation | see Kattis - snapperhard | 424 | 2.7 |

snapperhard | snapperhard | 2.2h, Bit Manipulation | bit manipulation; find the pattern; the easier version is also available at Kattis - snappereasy | 501 | 2.3 |

tictacstate | tictacstate | 2.2h, Bit Manipulation | convert the octal state into 3x3 Tic-Tac-Toe state and decide the game's outcome; the 18-th bit is not used | 403 | 2.5 |

zebrasocelots | zebrasocelots | 2.2h, Bit Manipulation | zebra is 1; ocelot is 0; simulation of long long | 563 | 3.2 |

buka | buka | 2.2i, Big Integer | a trivial problem if we use Python or Java BigInteger | 152 | 1.8 |

disastrousdoubling | disastrousdoubling | 2.2i, Big Integer | simulation; wrong answer if not using Big Integer | 324 | 3.7 |

generalizedrecursivefunctions | generalizedrecursivefuncti... | 2.2i, Big Integer | direct implementation of the given generalized recursive functions; but using Big Integer | 141 | 3.9 |

popkorn | popkorn | 2.2i, Big Integer | simple formula; use Big Integer | 1731 | 3.2 |

primaryarithmetic | primaryarithmetic | 2.2i, Big Integer | not a Big Integer problem but a simulation of basic addition | 399 | 2.7 |

simpleaddition | simpleaddition | 2.2i, Big Integer | that A+B on BigInteger question | 1913 | 1.9 |

simplearithmetic | simplearithmetic | 2.2i, Big Integer | trivial problem with Python (Big) Decimal | 389 | 4.7 |

threepowers | threepowers | 2.2i, Big Integer | Big Integer is for 3^n; binary rep of set; also available at UVa 10669 - Three powers | 700 | 2.6 |

wizardofodds | wizardofodds | 2.2i, Big Integer | if K is bigger than 350, the answer is clear; else just check if 2^K ≥ N | 488 | 2.6 |

bracketmatching | bracketmatching | 2.2j, Stack | bracket matching; stack | 1172 | 1.7 |

dream | dream | 2.2j, Stack | stack simulation; reading comprehension problem, need other fast DS for mapping strings to indices | 219 | 6.4 |

evenup | evenup | 2.2j, Stack | use stack to solve this problem | 1273 | 2.7 |

pairingsocks | pairingsocks | 2.2j, Stack | simulation using two stacks; just do as asked | 556 | 3.0 |

restaurant | restaurant | 2.2j, Stack | simulation with stack-based concept; drop plates at stack 2 (LIFO); use move 2-$gt;1 to reverse order; take from stack 1... | 364 | 4.5 |

reversebinary | reversebinary | 2.2j, Stack | decimal to binary; reverse it; binary to decimal | 7144 | 1.5 |

symmetricorder | symmetricorder | 2.2j, Stack | use stack to help reverse even-indexed names | 3584 | 1.5 |

thegrandadventure | thegrandadventure | 2.2j, Stack | stack simulation | 348 | 2.0 |

throwns | throwns | 2.2j, Stack | use stack of egg positions to help with the undo operation; be careful of corner cases involving modulo operation | 1091 | 2.6 |

bracketsequence | bracketsequence | 2.2k, Stack-based Problems | bracket matching variant; stack; push a pair of (+ result, * result) for each '('; pop topmost pair for each ')'; operat... | 100 | 5.5 |

bungeebuilder | bungeebuilder | 2.2k, Stack-based Problems | clever usage of stack; linear pass; bracket (mountain) matching variant | 83 | 3.3 |

circuitmath | circuitmath | 2.2k, Stack-based Problems | postfix calculator problem | 918 | 2.4 |

delimitersoup | delimitersoup | 2.2k, Stack-based Problems | bracket matching; stack | 382 | 1.9 |

backspace | backspace | 2.2l, List/Queue/Deque | we can use deque (or vector) to help solve this problem | 2517 | 3.0 |

ferryloading3 | ferryloading3 | 2.2l, List/Queue/Deque | simulation with queue; also available at UVa 10901 - Ferry Loading III | 368 | 3.6 |

ferryloading4 | ferryloading4 | 2.2l, List/Queue/Deque | simulation with queue; also available at UVa 11034 - Ferry Loading IV | 703 | 3.6 |

foosball | foosball | 2.2l, List/Queue/Deque | queue simulation; tedious | 186 | 3.7 |

integerlists | integerlists | 2.2l, List/Queue/Deque | use deque for fast deletion from front (normal) & back (reversed list); use stack to reverse the final list if it is... | 882 | 4.8 |

joinstrings | joinstrings | 2.2l, List/Queue/Deque | all '+' operations must be O(1) | 959 | 4.1 |

lyklagangriti | lyklagangriti | 2.2l, List/Queue/Deque | use list and its iterator; very similar to Kattis - sim | 114 | 2.7 |

server | server | 2.2l, List/Queue/Deque | one first come first serve pass; we can use queue although overkill | 3331 | 1.9 |

sim | sim | 2.2l, List/Queue/Deque | use list and its iterator | 99 | 2.0 |

teque | teque | 2.2l, List/Queue/Deque | all operations must be O(1) | 766 | 3.3 |

trendingtopic | trendingtopic | 2.2l, List/Queue/Deque | use queue of length 7 to maintain words in the past 7 days, unordered_map to count frequencies, sort to format the outpu... | 181 | 5.8 |

alehouse | alehouse | 2.3a, Priority Queue | discretize the events; PQ simulation | 223 | 4.6 |

clinic | clinic | 2.3a, Priority Queue | interesting PQ simulation; reverse thinking; project to time 0 | 165 | 3.0 |

guessthedatastructure | guessthedatastructure | 2.3a, Priority Queue | stack, queue, and priority_queue; also available at UVa 11995 - I Can Guess ... | 2148 | 2.5 |

heap | heap | 2.3a, Priority Queue | basic Binary (Max) Heap implementation task | 11 | 5.8 |

janeeyre | janeeyre | 2.3a, Priority Queue | simulate Anna's reading behavior with PQ; the input parsing is tedious | 79 | 4.8 |

jugglingpatterns | jugglingpatterns | 2.3a, Priority Queue | PQ simulation; reading comprehension | 48 | 6.3 |

knigsoftheforest | knigsoftheforest | 2.3a, Priority Queue | PQ simulation after sorting the entries by year | 184 | 3.6 |

numbertree | numbertree | 2.3a, Priority Queue | not a direct priority queue problem, but the indexing strategy is similar to binary heap indexing | 1760 | 2.1 |

pharmacy | pharmacy | 2.3a, Priority Queue | simulation with PQ (time) and 2 normal queues (in-store vs remote) | 118 | 3.4 |

rationalsequence2 | rationalsequence2 | 2.3a, Priority Queue | the L/R pattern can be easily derived and indexing strategy is similar to binary heap indexing | 1388 | 1.5 |

rationalsequence3 | rationalsequence3 | 2.3a, Priority Queue | the reverse problem of rationalsequence2 | 587 | 1.8 |

stockprices | stockprices | 2.3a, Priority Queue | PQ simulation; both max and min PQ | 109 | 3.7 |

alphabetspam | alphabetspam | 2.3b, DAT, ASCII | count the frequencies of lowercase, uppercase, and whitespace characters | 3902 | 1.4 |

cyclicalperiods | cyclicalperiods | 2.3b, DAT, ASCII | DAT of last occurrence of 26 chars [`a`..`z`], keep the running max | 112 | 3.0 |

keyboardd | keyboardd | 2.3b, DAT, ASCII | frequency counting of A-Zs and spaces | 92 | 2.0 |

quickbrownfox | quickbrownfox | 2.3b, DAT, ASCII | pangram; frequency counting of 26 alphabets | 4433 | 1.6 |

soundex | soundex | 2.3b, DAT, ASCII | DAT for soundex A-Z code mapping; also available at UVa 10260 - Soundex | 106 | 2.9 |

bookingaroom | bookingaroom | 2.3c, DAT, Others | only 100 rooms; use 1D Boolean array | 2849 | 1.7 |

busnumbers | busnumbers | 2.3c, DAT, Others | only 1000 bus numbers; use 1D Boolean array | 2776 | 2.4 |

dontbefake | dontbefake | 2.3c, DAT, Others | it is sufficient to use DAT of size 86400 to get the required answers efficiently | 100 | 2.9 |

freefood | freefood | 2.3c, DAT, Others | only 365 days in a year | 1965 | 1.5 |

hardware | hardware | 2.3c, DAT, Others | parsing is tedious; count the frequency of digits | 244 | 2.0 |

heimavinna | heimavinna | 2.3c, DAT, Others | DAT of 1000 problems | 431 | 1.4 |

princesspeach | princesspeach | 2.3c, DAT, Others | DAT; linear pass | 839 | 2.1 |

relocation | relocation | 2.3c, DAT, Others | just use DAT | 1112 | 1.5 |

simone | simone | 2.3c, DAT, Others | DAT to count frequencies of [1..K] | 106 | 1.6 |

bard | bard | 2.3d, Hash Table (set) | use one unordered_set per villager; simulate the singing process | 637 | 2.6 |

boatparts | boatparts | 2.3d, Hash Table (set) | use unordered_set | 1398 | 1.6 |

cd | cd | 2.3d, Hash Table (set) | unordered_set is faster than set here; or use modified merge as the input is sorted; also available at UVa 11849 - CD | 3176 | 5.3 |

deduplicatingfiles | deduplicatingfiles | 2.3d, Hash Table (set) | use vector to store the strings; unordered_set to store unique strings; and complete search to compare the n^2 hash code... | 583 | 4.4 |

engineeringenglish | engineeringenglish | 2.3d, Hash Table (set) | use unordered_set to remember duplicated words; transform to lowercase | 1627 | 2.2 |

esej | esej | 2.3d, Hash Table (set) | use unordered_set to prevent duplicate | 509 | 3.3 |

everywhere | everywhere | 2.3d, Hash Table (set) | use unordered_set | 7015 | 1.4 |

greetingcard | greetingcard | 2.3d, Hash Table (set) | use unordered_set; good question; major hint: only 12 neighbors | 607 | 4.9 |

icpcawards | icpcawards | 2.3d, Hash Table (set) | use unordered_set; print first 12 distinct Universities (and their first teams) | 2167 | 1.4 |

icpcrecordmatching | icpcrecordmatching | 2.3d, Hash Table (set) | string processing; set of emails/names; sort the output | 111 | 4.2 |

iwannabe | iwannabe | 2.3d, Hash Table (set) | sort Pokenoms based on each stat; pick top K ids and put in an unordered_set; report final size of unordered_set | 739 | 2.5 |

keywords | keywords | 2.3d, Hash Table (set) | pre-process the strings; put inside unordered_set; report final size | 349 | 2.3 |

knotknowledge | knotknowledge | 2.3d, Hash Table (set) | simple set difference problem | 890 | 1.5 |

nodup | nodup | 2.3d, Hash Table (set) | use unordered_set; string | 3564 | 1.3 |

oddmanout | oddmanout | 2.3d, Hash Table (set) | use unordered_set to find and eliminate pairs | 4450 | 1.5 |

pizzahawaii | pizzahawaii | 2.3d, Hash Table (set) | use Python to help with (unordered) set intersection and difference operations | 335 | 2.6 |

proofs | proofs | 2.3d, Hash Table (set) | parsing; use unordered_set to store past conclusions; a few corner cases | 48 | 2.4 |

securedoors | securedoors | 2.3d, Hash Table (set) | use unordered_set to keep track of the people | 2108 | 1.8 |

shiritori | shiritori | 2.3d, Hash Table (set) | linear pass; use unordered_set to keep track of words that have been called | 295 | 2.9 |

shoppinglist | shoppinglist | 2.3d, Hash Table (set) | simple set intersection problem | 16 | 4.4 |

shoppinglisteasy | shoppinglisteasy | 2.3d, Hash Table (set) | see Kattis - shoppinglist | 23 | 3.4 |

tripodometer | tripodometer | 2.3d, Hash Table (set) | let s = sum(d); subtract s by each d_i; keep the answers in a set; sort | 185 | 2.1 |

upprodun | upprodun | 2.3d, Hash Table (set) | not really a Hash Table problem but uses Hash Table concept; the number of teams in each room is the 'load factor' of th... | 197 | 1.9 |

variabelnamn | variabelnamn | 2.3d, Hash Table (set) | hash table (set) and DAT simulation | 411 | 3.0 |

whatdoesthefoxsay | whatdoesthefoxsay | 2.3d, Hash Table (set) | use unordered_set to record excluded sounds | 2578 | 2.1 |

babelfish | babelfish | 2.3e, Hash Table (map), E | a pure dictionary problem; use unordered_map; also available at UVa 10282 - Babelfish | 2835 | 2.3 |

competitivearcadebasketball | competitivearcadebasketbal... | 2.3e, Hash Table (map), E | use unordered_map | 209 | 2.8 |

conformity | conformity | 2.3e, Hash Table (map), E | use unordered_map to count frequencies of the sorted permutations of 5 ids; also available at UVa 11286 - Conformity | 1100 | 1.9 |

costumecontest | costumecontest | 2.3e, Hash Table (map), E | use unordered_map to map frequency of each category; get the minimum one; print output lexicographically | 532 | 2.0 |

election2 | election2 | 2.3e, Hash Table (map), E | frequency counting; be careful of tie breaker | 166 | 2.4 |

gandalfsspell | gandalfsspell | 2.3e, Hash Table (map), E | map string to char and char to string | 86 | 2.5 |

grandpabernie | grandpabernie | 2.3e, Hash Table (map), E | use unordered_map plus (sorted) vector | 1065 | 3.2 |

haypoints | haypoints | 2.3e, Hash Table (map), E | use unordered_map to deal with Hay Points dictionary; also available at UVa 10295 - Hay Points | 1055 | 2.0 |

marko | marko | 2.3e, Hash Table (map), E | frequency counting with unordered_map | 495 | 1.9 |

metaprogramming | metaprogramming | 2.3e, Hash Table (map), E | use unordered_map; somewhat similar with Kattis - addingwords | 820 | 2.4 |

nicknames | nicknames | 2.3e, Hash Table (map), E | use unordered_map of frequency of prefixes | 364 | 3.3 |

pakethanterare | pakethanterare | 2.3e, Hash Table (map), E | map package name to version number | 454 | 2.0 |

planets2 | planets2 | 2.3e, Hash Table (map), E | map species name to planet name; frequency counting | 106 | 3.5 |

recount | recount | 2.3e, Hash Table (map), E | use map; frequency counting | 1163 | 2.0 |

rollcall | rollcall | 2.3e, Hash Table (map), E | use unordered_map to count frequency; sort | 530 | 2.4 |

streetsahead | streetsahead | 2.3e, Hash Table (map), E | map street name to linear indices; find the absolute differences of the indices per query | 438 | 2.1 |

variablearithmetic | variablearithmetic | 2.3e, Hash Table (map), E | use unordered_map as mapper | 394 | 2.6 |

addingwords | addingwords | 2.3f, Hash Table (map), H | use unordered_map | 1880 | 3.9 |

awkwardparty | awkwardparty | 2.3f, Hash Table (map), H | use unordered_map to running max and running min; report the largest difference | 611 | 3.0 |

basicinterpreter | basicinterpreter | 2.3f, Hash Table (map), H | the harder version of Kattis - variablearithmetic; tedious; be careful; print string inside double quotes verbatim | 152 | 6.7 |

bokforing | bokforing | 2.3f, Hash Table (map), H | use unordered_map to map index to value; for each 'RESTART', clear the hash table in 'faster than O(N)' (amortized) and ... | 493 | 3.8 |

conversationlog | conversationlog | 2.3f, Hash Table (map), H | use combo DS: unordered_map, set, plus (sorted) vector | 507 | 2.8 |

iforaneye | iforaneye | 2.3f, Hash Table (map), H | use unordered_map to map the various rules mentioned in the problem description; tedious | 143 | 5.0 |

kaploeb | kaploeb | 2.3f, Hash Table (map), H | hash the total time and lap count of each start number; sort at the end | 899 | 2.3 |

magicalcows | magicalcows | 2.3f, Hash Table (map), H | use unordered_map of farm size to frequency; small simulation; but since C is small, we can also use DAT | 257 | 4.6 |

minorsetback | minorsetback | 2.3f, Hash Table (map), H | use unordered_map of string to another unordered_map of int to string; need a bit of music theory to solve the problem; ... | 147 | 3.6 |

parallelanalysis | parallelanalysis | 2.3f, Hash Table (map), H | reading comprehension; use unordered_map to map memory address to last time it is written | 80 | 4.8 |

recenice | recenice | 2.3f, Hash Table (map), H | use unordered_map to prepare pronunciation of [1..999]; precalculate the answer afterwards using another unordered_map | 225 | 3.1 |

snowflakes | snowflakes | 2.3f, Hash Table (map), H | use unordered_map to record the occurrence index of a certain snowflake size; use this to determine the answer in linear... | 404 | 4.4 |

bst | bst | 2.3g, Balanced BST (set) | simulate special BST [1..N] insertions using set | 449 | 7.3 |

caching | caching | 2.3g, Balanced BST (set) | combo ds (unordered_map and set) | 210 | 5.8 |

candydivision | candydivision | 2.3g, Balanced BST (set) | complete search from 1 to sqrt(N); insert all divisors into set for automatic sorting and elimination of duplicates | 702 | 3.4 |

compoundwords | compoundwords | 2.3g, Balanced BST (set) | use set extensively; iterator | 1807 | 1.7 |

coursescheduling | coursescheduling | 2.3g, Balanced BST (set) | keep (ordered) set of courses and (unordered) map of course to students taking the course | 40 | 3.1 |

ministryofmagic | ministryofmagic | 2.3g, Balanced BST (set) | simulate directly, use of queue and set (PQ with update key/increase key; use STL set) | 63 | 6.0 |

missinggnomes | missinggnomes | 2.3g, Balanced BST (set) | use set to keep ordered list of missing gnomes | 659 | 2.6 |

orphanbackups | orphanbackups | 2.3g, Balanced BST (set) | use set for auto sorting | 94 | 6.2 |

palindromicpassword | palindromicpassword | 2.3g, Balanced BST (set) | there are not more than 900 3-digits number; generate all and store them in a (sorted) set; find ceil and floor of input... | 431 | 3.3 |

raceday | raceday | 2.3g, Balanced BST (set) | use combo of map; multiset (the most important part for the rankings); and unordered_map | 184 | 3.8 |

raidteams | raidteams | 2.3g, Balanced BST (set) | use more than one PQs that can support erase operation | 75 | 3.5 |

administrativeproblems | administrativeproblems | 2.3h, Balanced BST (map) | use several maps as the output (of spy names) has to be sorted; be careful of corner cases | 194 | 6.3 |

baconeggsandspam | baconeggsandspam | 2.3h, Balanced BST (map) | use map; sort | 1712 | 1.6 |

cakeymccakeface | cakeymccakeface | 2.3h, Balanced BST (map) | map differences to frequencies; return the one with maximum frequency and if ties, the smallest difference | 197 | 3.8 |

doctorkattis | doctorkattis | 2.3h, Balanced BST (map) | Max Priority Queue with frequent (increaseKey) updates; use map | 114 | 4.7 |

fantasydraft | fantasydraft | 2.3h, Balanced BST (map) | use map to keep ordering; simulate; need to erase | 111 | 4.0 |

fodelsedagsmemorisering | fodelsedagsmemorisering | 2.3h, Balanced BST (map) | use map; sorted output | 289 | 1.8 |

hardwoodspecies | hardwoodspecies | 2.3h, Balanced BST (map) | use map; sorted output; also available at UVa 10226 - Hardwood Species | 378 | 2.7 |

kattissquest | kattissquest | 2.3h, Balanced BST (map) | use map of priority queues; other solutions exist | 834 | 3.1 |

maeting | maeting | 2.3h, Balanced BST (map) | map name to frequencies; sort in non-increasing order | 433 | 1.6 |

notamused | notamused | 2.3h, Balanced BST (map) | use map; sorted output | 601 | 2.0 |

opensource | opensource | 2.3h, Balanced BST (map) | use map and set to check previous strings; order needed; also available at UVa 11239 - Open Source | 291 | 3.3 |

problemclassification | problemclassification | 2.3h, Balanced BST (map) | mapper; frequency counting | 345 | 3.1 |

srednji | srednji | 2.3h, Balanced BST (map) | go left and right of B; use fast data structure like map to help determine the result fast | 164 | 4.1 |

warehouse | warehouse | 2.3h, Balanced BST (map) | use unordered_map and multimap | 920 | 2.1 |

zoo | zoo | 2.3h, Balanced BST (map) | parsing; keep last token; tolower; frequency counting with map; order needed | 1499 | 1.7 |

babynames | babynames | 2.3i, Order Statistics Tree | dynamic rank problem; use two pb_ds | 87 | 5.5 |

continuousmedian | continuousmedian | 2.3i, Order Statistics Tree | dynamic selection problem; specifically the median values; pb_ds helps | 140 | 3.9 |

cookieselection | cookieselection | 2.3i, Order Statistics Tree | map large integers to up to 600K integers; use pb_ds or Fenwick Tree and the select(median) operation of Fenwick Tree | 923 | 4.3 |

gcpc | gcpc | 2.3i, Order Statistics Tree | dynamic rank problem; pb_ds helps | 876 | 5.3 |

abinitio | abinitio | 2.4a, Graph Data Structures | combo: EL input, AM as working graph DS, AL output (in hash format); all operations must be O(V) or better | 104 | 7.3 |

alphabetanimals | alphabetanimals | 2.4a, Graph Data Structures | somewhat an Adjacency List data structure | 478 | 3.4 |

chopwood | chopwood | 2.4a, Graph Data Structures | Prüfer sequence; use priority_queue | 258 | 3.5 |

cutthenegativity | cutthenegativity | 2.4a, Graph Data Structures | AM to EL conversion | 1213 | 1.4 |

flyingsafely | flyingsafely | 2.4a, Graph Data Structures | trivial solution exists | 1421 | 1.7 |

hermits | hermits | 2.4a, Graph Data Structures | a simple Graph Data Structure application question | 98 | 3.2 |

illuminatispotti | illuminatispotti | 2.4a, Graph Data Structures | store the graph in an Adjacency Matrix; O(N^3) try-all possible triangles | 30 | 4.3 |

popularitycontest | popularitycontest | 2.4a, Graph Data Structures | a simple graph DS problem | 107 | 2.0 |

railroad | railroad | 2.4a, Graph Data Structures | do as asked; graph DS modification; bypass vertices with degree 2 | 95 | 6.3 |

traveltheskies | traveltheskies | 2.4a, Graph Data Structures | (graph) DS manipulation; an array of ALs (one per each day); simulate the number of people day by day | 188 | 3.2 |

tripplanning | tripplanning | 2.4a, Graph Data Structures | use unordered_map to map bidirectional edges into 1-based indices; simulate the linear journey | 232 | 2.4 |

weakvertices | weakvertices | 2.4a, Graph Data Structures | graph edge existence checks | 1775 | 1.5 |

almostunionfind | almostunionfind | 2.4b, Union-Find | new operation: move; idea: do not destroy the parent array structure; also available at UVa 11987 - Almost Union-Find | 618 | 7.0 |

bridgesandtunnels | bridgesandtunnels | 2.4b, Union-Find | map buildings to integer IDs; UFDS; size of set | 57 | 3.2 |

chatter | chatter | 2.4b, Union-Find | UFDS simulation using random number generation | 59 | 3.1 |

control | control | 2.4b, Union-Find | LA 7480 - Singapore15; simulation of UFDS; size of set; number of disjoint sets | 424 | 4.6 |

forests | forests | 2.4b, Union-Find | merge two disjoint sets if they are consistent; also available at UVa 10227 - Forests | 127 | 3.0 |

ladice | ladice | 2.4b, Union-Find | size of set; decrement one per usage | 615 | 2.8 |

more10 | more10 | 2.4b, Union-Find | UFDS; a bit of string processing; tedious | 94 | 7.1 |

skolavslutningen | skolavslutningen | 2.4b, Union-Find | group classes that share the same column into the same CC; report number of CCs | 152 | 1.9 |

swaptosort | swaptosort | 2.4b, Union-Find | it boils down to finding CCs of 1 with N-1; 2 with N-2; and so on... | 423 | 3.9 |

tildes | tildes | 2.4b, Union-Find | basic UFDS with size of set query | 165 | 2.6 |

unionfind | unionfind | 2.4b, Union-Find | basic UFDS; similar to UVa 00793 | 1086 | 4.8 |

virtualfriends | virtualfriends | 2.4b, Union-Find | maintain set attribute (size) in rep item; also available at UVa 11503 - Virtual Friends | 1078 | 3.9 |

fenwick | fenwick | 2.4c, Tree-related DS | basic Fenwick Tree; use long long | 695 | 4.5 |

justforsidekicks | justforsidekicks | 2.4c, Tree-related DS | use six Fenwick Trees, one for each gem type | 359 | 3.8 |

moviecollection | moviecollection | 2.4c, Tree-related DS | LA 5902 - NorthWesternEurope11; not a stack but a dynamic RSQ problem; also available at UVa 01513 - Movie collection | 547 | 5.5 |

supercomputer | supercomputer | 2.4c, Tree-related DS | easy problem if we use Fenwick Tree | 760 | 3.8 |

turbo | turbo | 2.4c, Tree-related DS | somewhat similar with UVa 01513/Kattis - moviecollection; use DAT (for mapping) and Fenwick Tree (for RSQ) | 507 | 4.3 |

worstweather | worstweather | 2.4c, Tree-related DS | store the year+rain data in a (sorted) array; binary search; Segment Tree/Sparse Table: static RMaxQueries | 118 | 7.7 |

4thought | 4thought | 3.2a, Pre-calculate-able | brute force 4^3 possibilities; integer division; pre-calculate | 2353 | 2.8 |

cardtrick2 | cardtrick2 | 3.2a, Pre-calculate-able | n <= 13, we can simulate the process using queue and precalculate all 13 possible answers | 869 | 1.6 |

chocolates | chocolates | 3.2a, Pre-calculate-able | RxC ≤ 16; use iterative bitmask to try all combinations; test combination with 2 floodfills (on 1s/chocolates and on ... | 48 | 5.0 |

contingencyplanning | contingencyplanning | 3.2a, Pre-calculate-able | precalculate answers for n <= 11; output 'JUST RUN!!' for n >= 12 | 412 | 2.0 |

foolingaround | foolingaround | 3.2a, Pre-calculate-able | there are only 379 different values of N where Bob wins; pre-calculateable | 117 | 5.8 |

gridmagic | gridmagic | 3.2a, Pre-calculate-able | run a complete search solution and pre-calculate the answers | 104 | 2.2 |

lastfactorialdigit | lastfactorialdigit | 3.2a, Pre-calculate-able | very easy due to small range of N; pre-calculateable | 4942 | 1.3 |

luckynumber | luckynumber | 3.2a, Pre-calculate-able | there is an increasing and decreasing output pattern; for N > 25, the answer is 0; for N ∈ [2..25], use naive brut... | 275 | 4.7 |

mancala | mancala | 3.2a, Pre-calculate-able | we can generate all possible winnable Mancala boards from smaller Mancala boards | 320 | 1.7 |

primematrix | primematrix | 3.2a, Pre-calculate-able | Notice that we can just find 1 row answer for 2 ≤ n ≤ 50; then store the results; we can use this to generate the ... | 140 | 4.2 |

sgcoin | sgcoin | 3.2a, Pre-calculate-able | we can either brute force short string message; precompute all possible hash values; or come up with O(1) solution | 271 | 2.4 |

theplank | theplank | 3.2a, Pre-calculate-able | n ≤ 24; backtrack (or DP) and save all 24 answers | 142 | 2.0 |

8queens | 8queens | 3.2b, Iterative (Two Loops) | classic 8-Queens problem; write a checker | 2385 | 3.2 |

antiarithmetic | antiarithmetic | 3.2b, Iterative (Two Loops) | 2 nested loops with pruning can still pass the time limit; compare this with UVa 11129; also available at UVa 10730 - An... | 195 | 7.3 |

bestrelayteam | bestrelayteam | 3.2b, Iterative (Two Loops) | sort runners based on flying start times; brute force first runner and pick top 3 other flying start runners | 1420 | 1.9 |

bikegears | bikegears | 3.2b, Iterative (Two Loops) | 2D nested loops; sort the output | 185 | 5.4 |

blackfriday | blackfriday | 3.2b, Iterative (Two Loops) | 2D nested loops; frequency counting | 2384 | 2.2 |

closestsums | closestsums | 3.2b, Iterative (Two Loops) | sort and then do O(n^2) pairings; also available at UVa 10487 - Closest Sums | 1105 | 2.9 |

codeguessing | codeguessing | 3.2b, Iterative (Two Loops) | try all possible two digits for Bob | 154 | 2.1 |

countdoubles | countdoubles | 3.2b, Iterative (Two Loops) | try all contiguous subarrays of m elements | 311 | 2.0 |

erosionfilter | erosionfilter | 3.2b, Iterative (Two Loops) | for each Ai, just try a few indices around it | 93 | 4.6 |

golombrulers | golombrulers | 3.2b, Iterative (Two Loops) | 2D nested loops; additional 1D loops for checking | 297 | 3.2 |

kafkaesque | kafkaesque | 3.2b, Iterative (Two Loops) | 2D nested loops; simple | 293 | 1.7 |

largesthoarding | largesthoarding | 3.2b, Iterative (Two Loops) | 2D nested loops; try all possible heights and try all N skycrapers | 149 | 3.7 |

liga | liga | 3.2b, Iterative (Two Loops) | 2D nested loops; interesting logic game; each team is independent; if number played and number loss both not defined, as... | 71 | 6.1 |

majstor | majstor | 3.2b, Iterative (Two Loops) | for the second output line; just try each of 'S', 'P', or 'R' at every round and take the max | 101 | 1.9 |

mathtrade | mathtrade | 3.2b, Iterative (Two Loops) | just try all starting point and simulate | 241 | 3.3 |

missingnumber | missingnumber | 3.2b, Iterative (Two Loops) | rolling prefix tests; doable with just 2D nested loops | 387 | 3.3 |

peg | peg | 3.2b, Iterative (Two Loops) | 2D nested loops; try all possible moves | 931 | 1.8 |

pet | pet | 3.2b, Iterative (Two Loops) | very simple 2D nested loops problem | 7932 | 1.4 |

putovanje | putovanje | 3.2b, Iterative (Two Loops) | clever problem with hint that masks possible brute force solution; just use 2D nested loops | 413 | 2.5 |

reduction | reduction | 3.2b, Iterative (Two Loops) | 2 nested loops; with sorting; also available at UVa 10670 - Work Reduction | 119 | 5.8 |

register | register | 3.2b, Iterative (Two Loops) | clever problem with hint that masks possible brute force solution; just use 2D nested loops | 583 | 2.1 |

smoothiestand | smoothiestand | 3.2b, Iterative (Two Loops) | simple 2D nested loops | 195 | 3.0 |

straights | straights | 3.2b, Iterative (Two Loops) | 2 nested loops with pruning | 227 | 3.3 |

summertrip | summertrip | 3.2b, Iterative (Two Loops) | 3 loops TLE; clever 2D nested loops; try all possible ending index i; use DAT to remember the latest lowest starting ind... | 632 | 2.4 |

telephones | telephones | 3.2b, Iterative (Two Loops) | brute force; check intervals; also available at UVa 12205 - Happy Telephones | 302 | 2.6 |

tourdefrance | tourdefrance | 3.2b, Iterative (Two Loops) | brute force plus sorting; also available at UVa 11242 - Tour de France | 354 | 2.7 |

whogoesthere | whogoesthere | 3.2b, Iterative (Two Loops) | small n and m; just simulate the process with 2D nested loop | 157 | 4.1 |

busskortet | busskortet | 3.2c, Three+ Nested Loops, E | try all possible 500, 200, and 100 to ensure correctness | 704 | 3.0 |

cinemaseating | cinemaseating | 3.2c, Three+ Nested Loops, E | 3 nested loops; O(8*R*C); with a small DAT for frequency counter | 68 | 2.5 |

cudoviste | cudoviste | 3.2c, Three+ Nested Loops, E | 4 nested loops; the inner loops is just 2x2; 5 possibilities of crushed cars; skip 2x2 area that contains building | 1194 | 1.4 |

mathhomework | mathhomework | 3.2c, Three+ Nested Loops, E | 3 nested loops | 257 | 2.1 |

npuzzle | npuzzle | 3.2c, Three+ Nested Loops, E | 4 nested loops; easy | 683 | 2.2 |

patuljci | patuljci | 3.2c, Three+ Nested Loops, E | 3 nested loops; n = 9 | 1123 | 1.8 |

radir | radir | 3.2c, Three+ Nested Loops, E | 3 nested loops; never drop any card | 70 | 3.1 |

restaurantopening | restaurantopening | 3.2c, Three+ Nested Loops, E | 4 nested loops | 307 | 1.9 |

safehouses | safehouses | 3.2c, Three+ Nested Loops, E | 4 nested loops | 261 | 3.1 |

set | set | 3.2c, Three+ Nested Loops, E | 4 nested loops; easy | 364 | 1.8 |

triangledrama | triangledrama | 3.2c, Three+ Nested Loops, E | try all O(N^3) triplets | 46 | 2.5 |

calculatingdartscores | calculatingdartscores | 3.2d, Three+ Nested Loops, H | 6 nested loops but easy; see if a*i +b*j + c*k == n | 752 | 2.8 |

goblingardenguards | goblingardenguards | 3.2d, Three+ Nested Loops, H | 3 nested loops; use 2D Boolean array to avoid over counting | 345 | 6.1 |

lektira | lektira | 3.2d, Three+ Nested Loops, H | 2 nested loops to try all 2 cutting points plus 1 more loop to actually do the reversing of sub words | 376 | 3.2 |

medals | medals | 3.2d, Three+ Nested Loops, H | not an easy problem; require analysis to realize that the search space is small; also available at UVa 10997 - Medals | 69 | 5.9 |

misa | misa | 3.2d, Three+ Nested Loops, H | 4 nested loops; grid; check to 8 directions | 502 | 2.2 |

tautology | tautology | 3.2d, Three+ Nested Loops, H | try all 2^5 = 32 values with pruning; also available at UVa 11108 - Tautology | 160 | 3.4 |

classpicture | classpicture | 3.2e, Iterative (Permutation) | try all permutation; filter forbidden pairs; fast simulation | 157 | 6.9 |

dancerecital | dancerecital | 3.2e, Iterative (Permutation) | try all R! permutations; compare adjacent routines | 274 | 4.2 |

dreamer | dreamer | 3.2e, Iterative (Permutation) | try all 8! permutations of digits; check if the date is valid; output earliest valid date | 406 | 2.0 |

towering | towering | 3.2e, Iterative (Permutation) | try all 6! permutations; get the one that works | 986 | 2.1 |

veci | veci | 3.2e, Iterative (Permutation) | try all permutations; get the one that is larger than X | 1193 | 1.8 |

victorythroughsynergy | victorythroughsynergy | 3.2e, Iterative (Permutation) | try all 10! team formations; get the one that works | 60 | 4.3 |

buildingboundaries | buildingboundaries | 3.2f, Iterative (Combination) | try all 2^3 = 8 orientations of 3 buildings; 3 horizontal packing; 3 vertical packing; 3! = 3 of 1 building on top of 2 ... | 207 | 3.4 |

doubleplusgood | doubleplusgood | 3.2f, Iterative (Combination) | only up to 2^17 possible combinations; use to_string and stoll | 228 | 2.8 |

exammanipulation | exammanipulation | 3.2f, Iterative (Combination) | only up to 2^10 possible answer keys; test which one is the most suitable one | 232 | 5.5 |

geppetto | geppetto | 3.2f, Iterative (Combination) | try all 2^N subsets of ingredients | 305 | 3.3 |

perket | perket | 3.2f, Iterative (Combination) | try all 2^N subsets of ingredients | 511 | 2.2 |

squaredeal | squaredeal | 3.2f, Iterative (Combination) | try all 3! permutations of rectangles and try all 2^3 combinations of rectangle orientations; test figure 1.a and 1.b co... | 232 | 4.6 |

zagrade | zagrade | 3.2f, Iterative (Combination) | try all subsets of bracket pairs to be removed | 298 | 3.1 |

99problems | 99problems | 3.2g, Try All Answers | try all possible candidate answers from 99 to 9999 | 213 | 1.6 |

communication | communication | 3.2g, Try All Answers | try all possible bytes; apply the bitmask formula | 764 | 2.0 |

cookingwater | cookingwater | 3.2g, Try All Answers | try all possible answers | 446 | 2.0 |

flexible | flexible | 3.2g, Try All Answers | try all possible answers | 2354 | 1.7 |

heirsdilemma | heirsdilemma | 3.2g, Try All Answers | try all possible answers; small range; avoid division by zero (this digit is not used) | 821 | 1.6 |

islands | islands | 3.2g, Try All Answers | try all possible subsets; prune the non-contiguous ones (only 55 valid bitmasks between [0..1023]); check the 'island' p... | 443 | 2.6 |

lamps | lamps | 3.2g, Try All Answers | try all possible small range of the answer (number of days) | 284 | 2.6 |

owlandfox | owlandfox | 3.2g, Try All Answers | try all answers; complete search | 743 | 1.8 |

parking2 | parking2 | 3.2g, Try All Answers | try all possible parking spaces; pick the best | 2049 | 1.4 |

prinova | prinova | 3.2g, Try All Answers | sort first, then try all possible answers, which are the values in betweens two even boy 'names' and values around A, A+... | 96 | 4.2 |

savingforretirement | savingforretirement | 3.2g, Try All Answers | try all possible answers; small constraint | 1248 | 1.7 |

successfulzoom | successfulzoom | 3.2g, Try All Answers | try all possible answers (k); the time complexity is like Sieve of Eratosthenes algorithm | 692 | 2.2 |

sunandmoon | sunandmoon | 3.2g, Try All Answers | try all possible answers up to 5000 | 532 | 2.1 |

tabsandspaces | tabsandspaces | 3.2g, Try All Answers | try all possible tab lengths; pick the one with best space saving | 55 | 2.9 |

walls | walls | 3.2g, Try All Answers | try whether the answer is 1/2/3/4; or Impossible; use up to 4 nested loops | 513 | 4.0 |

aboveaverage | aboveaverage | 3.2h, Math Simulation, Easier | compute average; see how many are above it; also available at UVa 10370 - Above Average | 3190 | 2.0 |

damagedequation | damagedequation | 3.2h, Math Simulation, Easier | try all 4*4 = 16 possibilities and test them | 62 | 2.1 |

dicecup | dicecup | 3.2h, Math Simulation, Easier | complete search; use map - order needed; pick the sum with the max frequency | 5454 | 1.2 |

easiest | easiest | 3.2h, Math Simulation, Easier | complete search; sum of digit | 3991 | 1.6 |

growlinggears | growlinggears | 3.2h, Math Simulation, Easier | physics of parabola; derivation; try all gears | 496 | 2.4 |

hailstone2 | hailstone2 | 3.2h, Math Simulation, Easier | just simulate; Collatz conjecture has max length 1349 for any n up to $10^12 | 226 | 1.8 |

harshadnumbers | harshadnumbers | 3.2h, Math Simulation, Easier | sum of digits; brute force | 1715 | 1.4 |

powersof2easy | powersof2easy | 3.2h, Math Simulation, Easier | try all integers in [0..n]; convert to string; search for 2^e as substring | 13 | 3.5 |

refrigerator | refrigerator | 3.2h, Math Simulation, Easier | use two nested loops to try all | 118 | 2.5 |

simplefactoring | simplefactoring | 3.2h, Math Simulation, Easier | try all possible d and e (f and g follow) | 159 | 2.6 |

smallestcalculatedvalue | smallestcalculatedvalue | 3.2h, Math Simulation, Easier | try all possible +, -, *, // in between a, b, c | 840 | 2.9 |

socialrunning | socialrunning | 3.2h, Math Simulation, Easier | try all possible starting runner; first and last runners will run alone at first and last segment, respectively | 138 | 1.8 |

sodaslurper | sodaslurper | 3.2h, Math Simulation, Easier | similar to UVa 10346; also available at UVa 11689 - Soda Surpler | 1920 | 1.6 |

somesum | somesum | 3.2h, Math Simulation, Easier | use complete search to get the answer | 575 | 1.8 |

sumoftheothers | sumoftheothers | 3.2h, Math Simulation, Easier | parsing; try each number as the sum; sum the rest | 1261 | 1.9 |

treirad | treirad | 3.2h, Math Simulation, Easier | brute force up to cubic root of N | 819 | 1.7 |

tri | tri | 3.2h, Math Simulation, Easier | brute force all possibilities | 3924 | 1.6 |

trollhunt | trollhunt | 3.2h, Math Simulation, Easier | brute force; simple | 976 | 2.6 |

videospeedup | videospeedup | 3.2h, Math Simulation, Easier | brute force; simple for loop; do as asked | 298 | 2.0 |

zamka | zamka | 3.2h, Math Simulation, Easier | Sum of Digit problem; brute force is sufficient | 5255 | 1.4 |

crackingrsa | crackingrsa | 3.2i, Math Simulation, Harder | a bit number theory; solvable with complete search | 258 | 2.3 |

disgruntledjudge | disgruntledjudge | 3.2i, Math Simulation, Harder | brute force constants a and b between [0..10â€‰000] and do O(n) checks; break early as soon as a solution is found; also... | 76 | 3.3 |

falling | falling | 3.2i, Math Simulation, Harder | rework the formula; complete search up to sqrt(D) | 588 | 3.1 |

houselawn | houselawn | 3.2i, Math Simulation, Harder | just do ask asked; use long long | 313 | 3.4 |

lipschitzconstant | lipschitzconstant | 3.2i, Math Simulation, Harder | sort; brute force; math observation | 253 | 4.6 |

milestones | milestones | 3.2i, Math Simulation, Harder | brute force all possibilities, use floating point fraction as both numerator and denominator are very high | 137 | 2.8 |

repeatingdecimal | repeatingdecimal | 3.2i, Math Simulation, Harder | simulate the process until we have printed c digits; append trailing zeroes if necessary | 397 | 3.6 |

robotopia | robotopia | 3.2i, Math Simulation, Harder | 2 linear equations; 2 unknowns; small range | 582 | 6.2 |

stopcounting | stopcounting | 3.2i, Math Simulation, Harder | observation; max prefix; brute force linear pass; from left/right | 352 | 4.9 |

thanosthehero | thanosthehero | 3.2i, Math Simulation, Harder | for-loop from backwards | 320 | 3.9 |

coconut | coconut | 3.2j, Josephus Problem | maintain a circular linked list of hand symbols; variant of Josephus problem; other solution exists | 636 | 1.6 |

eenymeeny | eenymeeny | 3.2j, Josephus Problem | Josephus problem; small n; just simulate | 492 | 1.7 |

musicalchairs | musicalchairs | 3.2j, Josephus Problem | Josephus variant; brute force | 139 | 4.0 |

toys | toys | 3.2j, Josephus Problem | use general case Josephus recurrence | 142 | 4.5 |

draughts | draughts | 3.2k, Backtracking (Easier) | backtracking with pruning; similar to Kattis - crackerbarrel/peggamefortwo | 69 | 4.1 |

goodmorning | goodmorning | 3.2k, Backtracking (Easier) | we can use backtracking to generate all possible (small) numbers that can be pressed according to the constraints | 347 | 2.7 |

gradecurving | gradecurving | 3.2k, Backtracking (Easier) | try all possible answers; function grows fast to 100 | 170 | 4.5 |

natjecanje | natjecanje | 3.2k, Backtracking (Easier) | 4 options for each team with kayak: do nothing, pass to left (if damaged), keep to self (if damaged), pass to right (if ... | 701 | 2.5 |

paintings | paintings | 3.2k, Backtracking (Easier) | try all possible paintings based on Catherine's preference; skip hideous color pairs | 162 | 3.6 |

carvet | carvet | 3.2l, Backtracking (Harder) | backtrack; similar to Kattis - solitaire; checkers jumping style | 120 | 3.9 |

dobra | dobra | 3.2l, Backtracking (Harder) | try all possible 3^n changes of '_' (to a vowel, an 'L', or other consonant not 'L'); prune invalid states; count valid ... | 44 | 3.9 |

fruitbaskets | fruitbaskets | 3.2l, Backtracking (Harder) | interesting backtracking problem; compute the small numbers < 200; output all minus this value computed via backtrack... | 493 | 4.1 |

pagelayout | pagelayout | 3.2l, Backtracking (Harder) | a bit of geometry; O(2^n imes n^2 iterative bitmask will TLE; need to use recursive backtracking with pruning | 84 | 5.1 |

primes | primes | 3.2l, Backtracking (Harder) | backtrack; s: (id; num); prune if num exceeds Y; t: keeps this prime P[id] or try next prime factor; count num that is b... | 165 | 5.8 |

solitaire | solitaire | 3.2l, Backtracking (Harder) | backtrack; similar to Kattis - crackerbarrel and Kattis - peggamefortwo; but on simpler grid graph and there is no need ... | 169 | 3.4 |

firefly | firefly | 3.3a, Binary Search | sort stalactites vs stalagmites separately; brute force height; binary search the obstacles hit | 323 | 4.0 |

massivecardgame | massivecardgame | 3.3a, Binary Search | sort once upfront; upperbound-lowerbound per query | 803 | 3.0 |

outofsorts | outofsorts | 3.3a, Binary Search | do O(log n) binary searches on unsorted array n times | 107 | 3.7 |

roompainting | roompainting | 3.3a, Binary Search | sort the cans at shop (can be used more than once); use lower_bound for what Joe needs at shop | 416 | 3.8 |

synchronizinglists | synchronizinglists | 3.3a, Binary Search | sort and lower_bound | 2130 | 1.5 |

bootstrappingnumber | bootstrappingnumber | 3.3b, Bisection and BSTA, E | BSTA+exponent | 144 | 2.4 |

carefulascent | carefulascent | 3.3b, Bisection and BSTA, E | BSTA + Physics simulation | 558 | 1.8 |

financialplanning | financialplanning | 3.3b, Bisection and BSTA, E | BSTA + observation | 108 | 3.5 |

freeweights | freeweights | 3.3b, Bisection and BSTA, E | BSTA + simulation; Mathematical observation | 356 | 4.5 |

hindex | hindex | 3.3b, Bisection and BSTA, E | BSTA + another binary search | 460 | 3.3 |

htoo | htoo | 3.3b, Bisection and BSTA, E | BSTA + simulation; use DAT | 200 | 2.4 |

monk | monk | 3.3b, Bisection and BSTA, E | BSTA + simulation; cool | 86 | 3.3 |

slalom2 | slalom2 | 3.3b, Bisection and BSTA, E | BSTA + Physics simulation; also available at UVa 11627 - Slalom | 43 | 5.4 |

smallschedule | smallschedule | 3.3b, Bisection and BSTA, E | BSTA + greedy or math | 302 | 3.1 |

speed | speed | 3.3b, Bisection and BSTA, E | LA 8043 - WorldFinals RapidCity17; BSTA + Physics; also available at UVa 01753 - Need for Speed | 955 | 3.2 |

suspensionbridges | suspensionbridges | 3.3b, Bisection and BSTA, E | BSTA + Maths; be careful of precision error | 409 | 4.6 |

svada | svada | 3.3b, Bisection and BSTA, E | BSTA + simulation; process the two types of monkeys separately | 144 | 3.5 |

taxing | taxing | 3.3b, Bisection and BSTA, E | BSTA + simulation; use double; be careful of precision errors | 143 | 4.7 |

a1paper | a1paper | 3.3c, Ternary Search & Others | division of A1 paper is a kind of DnC principle | 1212 | 3.9 |

bottleflip | bottleflip | 3.3c, Ternary Search & Others | r is not needed; ternary search the optimal water height; derive center of mass formula | 202 | 2.4 |

cantor | cantor | 3.3c, Ternary Search & Others | ternary search; also available at UVa 11701 - Cantor | 255 | 2.7 |

ceiling | ceiling | 3.3c, Ternary Search & Others | LA 7578 - WorldFinals Phuket16; BST insertion then tree equality check; also available at UVa 01738 - Ceiling Function | 1871 | 1.9 |

euclideantsp | euclideantsp | 3.3c, Ternary Search & Others | that complex formula described in problem description is unimodal; c ranges from ≥ 0.1 to ≤ 500.0; ternary search;... | 288 | 2.3 |

goingtoseed | goingtoseed | 3.3c, Ternary Search & Others | divide to search into four regions; extension of binary/ternary search concept | 156 | 6.2 |

grazedgrains | grazedgrains | 3.3c, Ternary Search & Others | recursive subdivision the area into four regions that keeps getting smaller; in-circle checks | 301 | 3.1 |

jewelrybox | jewelrybox | 3.3c, Ternary Search & Others | the objective function is unimodal; ternary search | 775 | 1.6 |

qanat | qanat | 3.3c, Ternary Search & Others | the low rating is misleading; this is a difficult math problem that requires (two) ternary searches; other solution exis... | 173 | 2.2 |

reconnaissance | reconnaissance | 3.3c, Ternary Search & Others | the objective function is unimodal; ternary search | 101 | 3.8 |

sretan | sretan | 3.3c, Ternary Search & Others | the pattern is like Gray code; find the pattern via Divide and Conquer | 110 | 4.1 |

sylvester | sylvester | 3.3c, Ternary Search & Others | 2D grid; DnC into 4 regions; count how many times that cell is part of the fourth quadrant | 359 | 2.2 |

tricktreat | tricktreat | 3.3c, Ternary Search & Others | ternary search; the function is unimodal | 156 | 3.9 |

zipline | zipline | 3.3c, Ternary Search & Others | min = straight line distance; max = use ternary search | 555 | 3.5 |

avoidland | avoidland | 3.4a, Greedy (Classical) | observe that number of rows with 0 pawn and rows with > 1 pawns should be the same; greedy bipartite matching | 256 | 3.4 |

classrooms | classrooms | 3.4a, Greedy (Classical) | variant of interval covering; multiple rooms | 229 | 5.9 |

color | color | 3.4a, Greedy (Classical) | sort the sock colors and greedily assign them to washing machines | 980 | 2.2 |

distributingseats | distributingseats | 3.4a, Greedy (Classical) | sort; greedy bipartite matching; assign passenger to earliest available row first | 60 | 5.8 |

fishmongers | fishmongers | 3.4a, Greedy (Classical) | sort; greedy bipartite matching | 160 | 3.6 |

froshweek2 | froshweek2 | 3.4a, Greedy (Classical) | greedy; sort first; similar to Dragon of Loowater; greedy matching | 489 | 2.3 |

grass | grass | 3.4a, Greedy (Classical) | interval covering; also available at UVa 10382 - Watering Grass | 330 | 5.3 |

inflation | inflation | 3.4a, Greedy (Classical) | sort; greedy matching | 711 | 1.8 |

intervalcover | intervalcover | 3.4a, Greedy (Classical) | classic interval covering; be very careful with floating point errors | 268 | 5.6 |

intervalscheduling | intervalscheduling | 3.4a, Greedy (Classical) | classic interval scheduling; sort by non-decreasing ending times | 420 | 1.6 |

jamboree | jamboree | 3.4a, Greedy (Classical) | greedy load balancing like UVa 00410 | 295 | 2.4 |

loowater | loowater | 3.4a, Greedy (Classical) | sort; greedy matching; also available at UVa 11292 - The Dragon of Loowater | 710 | 3.0 |

messages | messages | 3.4a, Greedy (Classical) | simple string matching; sort; like greedy interval covering | 134 | 5.2 |

remorse | remorse | 3.4a, Greedy (Classical) | simplified Huffman coding; only first 26 | 203 | 2.2 |

speedrun | speedrun | 3.4a, Greedy (Classical) | sort by non-decreasing end times; classic interval covering | 28 | 2.3 |

squarepegs | squarepegs | 3.4a, Greedy (Classical) | convert square to circular; sort; greedy matching | 265 | 3.1 |

acm2 | acm2 | 3.4b, Involving Sorting, E | greedy; sorting | 790 | 2.6 |

akcija | akcija | 3.4b, Involving Sorting, E | greedy; sorting | 2658 | 2.0 |

aprizenoonecanwin | aprizenoonecanwin | 3.4b, Involving Sorting, E | greedy; sorting | 790 | 2.5 |

cocktail | cocktail | 3.4b, Involving Sorting, E | sort; greedy | 1191 | 2.9 |

fallingapart | fallingapart | 3.4b, Involving Sorting, E | greedy; sorting | 1011 | 1.6 |

fridge | fridge | 3.4b, Involving Sorting, E | greedy; sorting | 429 | 3.1 |

gettowork | gettowork | 3.4b, Involving Sorting, E | greedy; sorting | 255 | 2.2 |

help | help | 3.4b, Involving Sorting, E | greedy; sorting | 60 | 7.5 |

hotsprings | hotsprings | 3.4b, Involving Sorting, E | greedy; sorting | 86 | 1.9 |

icpcteamselection | icpcteamselection | 3.4b, Involving Sorting, E | greedy; sorting | 586 | 3.0 |

linesperhour | linesperhour | 3.4b, Involving Sorting, E | sort; greedy | 595 | 1.7 |

minimumscalar | minimumscalar | 3.4b, Involving Sorting, E | greedy; sorting | 1202 | 2.3 |

pikemaneasy | pikemaneasy | 3.4b, Involving Sorting, E | greedy; sorting | 473 | 3.5 |

pizzubestun | pizzubestun | 3.4b, Involving Sorting, E | sort; greedy every two indices; a bit different between odd and even n | 323 | 2.2 |

planetaris | planetaris | 3.4b, Involving Sorting, E | greedy; sorting | 143 | 2.8 |

plantingtrees | plantingtrees | 3.4b, Involving Sorting, E | greedy; sorting | 3462 | 2.0 |

redistribution | redistribution | 3.4b, Involving Sorting, E | greedy; sorting | 537 | 2.0 |

sangbok | sangbok | 3.4b, Involving Sorting, E | sort; greedy | 200 | 1.9 |

shopaholic | shopaholic | 3.4b, Involving Sorting, E | greedy; sorting | 959 | 2.4 |

stadiljus | stadiljus | 3.4b, Involving Sorting, E | sort; greedy | 315 | 2.2 |

standings | standings | 3.4b, Involving Sorting, E | greedy; sorting | 329 | 4.1 |

textmessaging | textmessaging | 3.4b, Involving Sorting, E | greedy; sorting | 222 | 2.9 |

toflur | toflur | 3.4b, Involving Sorting, E | greedy; sorting | 178 | 2.5 |

universityzoning | universityzoning | 3.4b, Involving Sorting, E | greedy; sorting; use Manhattan distance to compute distances | 122 | 2.5 |

woodcutting | woodcutting | 3.4b, Involving Sorting, E | greedy; sorting | 572 | 3.1 |

airconditioned | airconditioned | 3.4c, Involving Sorting, H | greedy; sorting | 1116 | 3.9 |

andrewant | andrewant | 3.4c, Involving Sorting, H | greedy; sorting | 97 | 4.9 |

birds | birds | 3.4c, Involving Sorting, H | greedy; sorting | 566 | 3.5 |

ceremony | ceremony | 3.4c, Involving Sorting, H | greedy; sorting | 849 | 4.3 |

dasort | dasort | 3.4c, Involving Sorting, H | greedy; sorting | 284 | 2.9 |

delivery | delivery | 3.4c, Involving Sorting, H | greedy; sorting | 253 | 3.3 |

fairdivision | fairdivision | 3.4c, Involving Sorting, H | greedy; sorting | 74 | 4.4 |

implementationirregularities | implementationirregulariti... | 3.4c, Involving Sorting, H | sort; greedy | 305 | 3.3 |

intergalacticbidding | intergalacticbidding | 3.4c, Involving Sorting, H | greedy; sorting | 346 | 3.4 |

keepitcool | keepitcool | 3.4c, Involving Sorting, H | greedy; sorting | 290 | 2.4 |

lopsidedlineup | lopsidedlineup | 3.4c, Involving Sorting, H | sort; greedy | 146 | 2.9 |

trip2007 | trip2007 | 3.4c, Involving Sorting, H | greedy; sorting; also available at UVa 11100 - The Trip, 2007 | 191 | 2.8 |

wffnproof | wffnproof | 3.4c, Involving Sorting, H | greedy; sorting; also available at UVa 11103 - WFF'N Proof | 117 | 2.9 |

annoyedcoworkers | annoyedcoworkers | 3.4d, Involving PQ | greedy PQ simulation | 429 | 3.2 |

arraysmoothening | arraysmoothening | 3.4d, Involving PQ | greedy PQ simulation | 1291 | 2.6 |

ballotboxes | ballotboxes | 3.4d, Involving PQ | greedy; priority queue | 776 | 4.4 |

canvas | canvas | 3.4d, Involving PQ | greedy; priority queue | 214 | 3.5 |

entertainmentbox | entertainmentbox | 3.4d, Involving PQ | sort; greedy simulation; Priority Queue with update key (we can use multiset) | 274 | 6.0 |

vegetables | vegetables | 3.4d, Involving PQ | greedy; priority queue | 347 | 3.4 |

workstations | workstations | 3.4d, Involving PQ | greedy; priority queue | 1110 | 3.6 |

ants | ants | 3.4e, Non Classical, Easier | greedy; also available at UVa 10714 - Ants | 1145 | 2.5 |

applesack | applesack | 3.4e, Non Classical, Easier | greedy | 202 | 3.5 |

bank | bank | 3.4e, Non Classical, Easier | greedy | 2389 | 2.6 |

colourwars | colourwars | 3.4e, Non Classical, Easier | greedy | 199 | 3.1 |

driver | driver | 3.4e, Non Classical, Easier | greedy | 198 | 3.8 |

horrorfilmnight | horrorfilmnight | 3.4e, Non Classical, Easier | greedy | 207 | 3.4 |

knitpicking | knitpicking | 3.4e, Non Classical, Easier | greedy | 82 | 2.4 |

marblestree | marblestree | 3.4e, Non Classical, Easier | greedy; also available at UVa 10672 - Marbles on a tree | 258 | 3.0 |

pripreme | pripreme | 3.4e, Non Classical, Easier | greedy | 259 | 2.7 |

simplicity | simplicity | 3.4e, Non Classical, Easier | greedy | 694 | 2.5 |

skocimis | skocimis | 3.4e, Non Classical, Easier | greedy | 2156 | 1.6 |

teacherevaluation | teacherevaluation | 3.4e, Non Classical, Easier | greedy | 262 | 3.0 |

cardtrading | cardtrading | 3.4f, Non Classical, Harder | greedy | 38 | 5.0 |

dvds | dvds | 3.4f, Non Classical, Harder | greedy | 731 | 2.9 |

logland | logland | 3.4f, Non Classical, Harder | greedy | 47 | 5.8 |

playground | playground | 3.4f, Non Classical, Harder | greedy | 60 | 4.7 |

stockbroker | stockbroker | 3.4f, Non Classical, Harder | greedy | 578 | 3.4 |

virus | virus | 3.4f, Non Classical, Harder | greedy | 753 | 3.6 |

alicedigital | alicedigital | 3.5a, Max 1D/2D Range Sum | max 1D range sum variant; the solution is not DP; notice that m is small | 687 | 4.2 |

commercials | commercials | 3.5a, Max 1D/2D Range Sum | transform each input by -P; Kadane's algorithm | 1570 | 2.0 |

fieldtrip | fieldtrip | 3.5a, Max 1D/2D Range Sum | necessary condition: s (sum of class section sizes) must be divisible by 3; use DP 1D range sum to do select(s/3) and se... | 32 | 3.0 |

foldedmap | foldedmap | 3.5a, Max 1D/2D Range Sum | 2D range sum; brute force the position of starting tile | 49 | 4.6 |

nered | nered | 3.5a, Max 1D/2D Range Sum | 2D range sum; brute force possible rectangular submatrix and keep the one with minimum modification | 41 | 3.2 |

prozor | prozor | 3.5a, Max 1D/2D Range Sum | 2D range sum with fix range; output formatting | 558 | 1.6 |

purplerain | purplerain | 3.5a, Max 1D/2D Range Sum | max 1D range sum variant; Kadane's algorithm | 288 | 4.3 |

sellingspatulas | sellingspatulas | 3.5a, Max 1D/2D Range Sum | -8 per time slot initially; read sale data; 1D range sum; complete search | 109 | 8.0 |

shortsell | shortsell | 3.5a, Max 1D/2D Range Sum | similar to Kadane's algorithm; linear pass; prefix sum | 104 | 4.1 |

alphabet | alphabet | 3.5b, LIS | find LIS of a short string; the answer is 26-LIS_length | 666 | 3.2 |

increasingsubsequence | increasingsubsequence | 3.5b, LIS | LIS; n ≤ 200$; print lexicographically smallest solution, 99% similar to 'longincsubseq' | 352 | 4.1 |

longincsubseq | longincsubseq | 3.5b, LIS | standard O(n log k) LIS; print any solution | 579 | 5.7 |

manhattanmornings | manhattanmornings | 3.5b, LIS | utilize symmetries to simplify the problem; then run LIS variant in O(N log K) | 154 | 4.7 |

nesteddolls | nesteddolls | 3.5b, LIS | sort in one dimension; Dilworth's theorem; LIS in the other; also available at UVa 11368 - Nested Dolls | 115 | 7.1 |

studentsko | studentsko | 3.5b, LIS | sort skills of N players; map them to K teams; find LNDS in O(N log K); answer is N-LNDS | 124 | 3.9 |

trainsorting | trainsorting | 3.5b, LIS | max(LIS(i)+LDS(i)-1), âˆ€i âˆˆ [0...n-1]; also available at UVa 11456 | 522 | 5.4 |

knapsack | knapsack | 3.5c, 0-1 KNAPSACK | basic DP KNAPSACK; print the solution | 687 | 4.8 |

muzicari | muzicari | 3.5c, 0-1 KNAPSACK | set Knapsack of size = T, each break length as item weight, and value = 1/2 (put that break at 'virtual knapsack 1/2', r... | 343 | 4.9 |

ninepacks | ninepacks | 3.5c, 0-1 KNAPSACK | brute force all possible sums; use DP SUBSET-SUM on each hotdog and bun packs; clever problem | 499 | 4.4 |

orders | orders | 3.5c, 0-1 KNAPSACK | interesting KNAPSACK variant; print the solution | 713 | 4.5 |

presidentialelections | presidentialelections | 3.5c, 0-1 KNAPSACK | pre-process the input to discard non winnable states; be careful of negative total voters; then standard DP KNAPSACK | 116 | 5.7 |

bagoftiles | bagoftiles | 3.5d, COIN-CHANGE | count number of ways to do COIN-CHANGE; meet in the middle; DP combinatorics (n choose k) to find the answer for a+b | 102 | 6.5 |

canonical | canonical | 3.5d, COIN-CHANGE | complete search possible range of counter examples; do both greedy COIN-CHANGE and DP COIN-CHANGE | 502 | 5.7 |

exactchange2 | exactchange2 | 3.5d, COIN-CHANGE | a variation to the Coin-Change problem; also available at UVa 11517 - Exact Change | 708 | 5.4 |

beepers | beepers | 3.5e, TSP | DP or recursive backtracking with sufficient pruning; also available at UVa 10496 - Collecting Beepers | 196 | 4.6 |

bustour | bustour | 3.5e, TSP | LA 6028 - WorldFinals Warsaw12; DP TSP variant; also available at UVa 01281 - Bus Tour | 124 | 6.1 |

cycleseasy | cycleseasy | 3.5e, TSP | Count number of HAMILTONIAN-TOURs | 108 | 4.1 |

errands | errands | 3.5e, TSP | map location names to integer indices; DP TSP | 51 | 7.0 |

maximizingyourpay | maximizingyourpay | 3.5e, TSP | Max-Traveling-Salesman-Problem; can go back to vertex 0 early; use DP bitmask | 60 | 6.4 |

pokemongogo | pokemongogo | 3.5e, TSP | DP TSP variant; there can be more than one Pokemon in the same location | 154 | 5.0 |

race | race | 3.5e, TSP | try all possible subset of locations; run DP TSP variant from start to ending to see if the plan is doable; keep the bes... | 65 | 7.5 |

hopavinna | hopavinna | 3.5f, DP level 1 | s: (participate_before, i); t: if participate_before, you can choose to skip assignment i; or do assignment i | 72 | 3.2 |

keyboardconcert | keyboardconcert | 3.5f, DP level 1 | s: (pos, cur); at tune[pos], playing instrument cur; t: try staying or switch; better solution exists | 100 | 4.5 |

nikola | nikola | 3.5f, DP level 1 | s: (pos, last_jump); t: jump forward or backward | 295 | 3.6 |

permutationdescent | permutationdescent | 3.5f, DP level 1 | derive the required formula; use memoization | 291 | 1.8 |

spiderman | spiderman | 3.5f, DP level 1 | simple DP; go up or down; print solution | 1010 | 3.9 |

ticketpricing | ticketpricing | 3.5f, DP level 1 | LA 6867 - Rocky Mountain15; similar with UVa 11450 discussed in this book; real life problem; print (the first) part of ... | 138 | 4.9 |

weightofwords | weightofwords | 3.5f, DP level 1 | s: (cur_l, cur_w); t: try all 26 characters; print any solution | 286 | 2.6 |

wordclouds | wordclouds | 3.5f, DP level 1 | s: (i); t: try breaking to next row at subsequent j = [i..N]; O(N^2) DP | 104 | 5.0 |

damsindistress | damsindistress | 3.5g, DP level 2 | bottom up DP; the input is already in topological order | 431 | 3.9 |

debugging | debugging | 3.5g, DP level 2 | s: (n); t: divide the program into [2..n] blocks | 226 | 6.0 |

drivinglanes | drivinglanes | 3.5g, DP level 2 | s: (st, ln); t: try all other lanes; be careful of corner cases | 105 | 3.7 |

kutevi | kutevi | 3.5g, DP level 2 | s: (360 integer degrees) | 170 | 2.6 |

predictinggme | predictinggme | 3.5g, DP level 2 | s: (day, has_stock, stock_value); t: skip to tomorrow/buy today's stock/sell the stock and jump two days | 125 | 4.3 |

tight | tight | 3.5g, DP level 2 | s: (i, j); #tight words of length i that end in digit j divided by #words: (k+1)^n; also available at UVa 10081 - Tight ... | 100 | 3.5 |

walrusweights | walrusweights | 3.5g, DP level 2 | backtracking with memoization | 570 | 3.8 |

watersheds | watersheds | 3.5g, DP level 2 | DP on an implicit DAG | 41 | 3.2 |

cartrouble | cartrouble | 4.2a, Finding CCs | graph traversal on forward and reverse graphs | 106 | 4.4 |

daceydice | daceydice | 4.2a, Finding CCs | reachability test of a state-space graph; s: (r, c, where_is_five) | 171 | 3.5 |

dominoes2 | dominoes2 | 4.2a, Finding CCs | unlike UVa 11504, we treat SCCs as CCs; also available at UVa 11518 - Dominos 2 | 599 | 3.3 |

moneymatters | moneymatters | 4.2a, Finding CCs | see if the sum of vertex weights of each CC = 0 | 990 | 3.1 |

pearwise | pearwise | 4.2a, Finding CCs | clever problem wording; can be reduced into basic graph traversal | 159 | 3.7 |

reachableroads | reachableroads | 4.2a, Finding CCs | report number of CC-1 | 892 | 2.1 |

securitybadge | securitybadge | 4.2a, Finding CCs | reachability test; clever idea to compress ids | 87 | 6.6 |

skyislands | skyislands | 4.2a, Finding CCs | reachability test | 37 | 2.1 |

terraces | terraces | 4.2a, Finding CCs | group cells with similar height together; if it cannot flow to any other component with lower height, add the size of th... | 339 | 3.6 |

wheresmyinternet | wheresmyinternet | 4.2a, Finding CCs | check connectivity to vertex 1 | 1716 | 3.7 |

amoebas | amoebas | 4.2b, Flood Fill, Easier | easy floodfill | 1079 | 1.8 |

countingstars | countingstars | 4.2b, Flood Fill, Easier | basic flood fill problem; count CCs | 1494 | 2.7 |

floodit | floodit | 4.2b, Flood Fill, Easier | multiple calls of flood fill tests | 74 | 2.9 |

fontan | fontan | 4.2b, Flood Fill, Easier | modified multi-sources BFS/floodfill | 101 | 2.2 |

gold | gold | 4.2b, Flood Fill, Easier | flood fill with extra blocking constraint; also available at UVa 11561 - Getting Gold | 735 | 2.2 |

10kindsofpeople | 10kindsofpeople | 4.2c, Flood Fill, Harder | intelligent flood fill; just run once to avoid TLE as there are many queries | 2380 | 3.9 |

coast | coast | 4.2c, Flood Fill, Harder | intelligent flood fill; just run once to avoid TLE as there are many queries | 1339 | 3.2 |

island | island | 4.2c, Flood Fill, Harder | super tedious flood fill; involving one directional flood fill involving bridges 'B's; bridges may connect islands in cy... | 113 | 6.2 |

islands3 | islands3 | 4.2c, Flood Fill, Harder | optimistic flood fill; assume all Cs are Ls | 936 | 2.1 |

vindiagrams | vindiagrams | 4.2c, Flood Fill, Harder | challenging and tedious flood fill problem | 76 | 5.3 |

brexit | brexit | 4.2d, Topological Sort | toposort; chain reaction; modified Kahn's algorithm | 826 | 3.6 |

brexitnegotiations | brexitnegotiations | 4.2d, Topological Sort | toposort with modified Kahn's algorithm; greedy | 270 | 4.8 |

builddeps | builddeps | 4.2d, Topological Sort | the graph is acyclic; toposort with DFS from the changed file | 626 | 4.7 |

collapse | collapse | 4.2d, Topological Sort | similar with Kattis - brexit | 77 | 5.8 |

conservation | conservation | 4.2d, Topological Sort | modified Kahn's algorithm; greedily process all steps in a certain lab before alternating to the other lab | 133 | 4.2 |

curveknights | curveknights | 4.2d, Topological Sort | input is a DAG; multi-sources, find toposort; propagate using topological order | 46 | 3.3 |

digicomp2 | digicomp2 | 4.2d, Topological Sort | toposort helps avoid TLE; do not simulate the process n times as n can be as big as 10^18 | 288 | 5.9 |

grapevine | grapevine | 4.2d, Topological Sort | BFS variant; like Kahn's algorithm, only propagate from a person once his/her skepticism level is cleared; be careful wi... | 84 | 6.4 |

managingpackaging | managingpackaging | 4.2d, Topological Sort | if the graph is cyclic, output 'cannot be ordered'; otherwise, find the lexicographically smallest topological order | 128 | 5.9 |

pickupsticks | pickupsticks | 4.2d, Topological Sort | cycle check + toposort if DAG; also available at item UVa 11686 - Pick up sticks | 373 | 4.7 |

amanda | amanda | 4.2e, Graph Properties Check | add edge only among airports where only one end point has lounge; bicolouring/bipartite check; pick colour with smaller ... | 368 | 5.2 |

ballsandneedles | ballsandneedles | 4.2e, Graph Properties Check | cycle check on 2 similar graphs; easier solution exists | 161 | 3.2 |

breakingbad | breakingbad | 4.2e, Graph Properties Check | check if we can decompose the vertices into two disjoint sets; bipartite graph check | 643 | 4.2 |

hoppers | hoppers | 4.2e, Graph Properties Check | the answer is number of CC-1 if there is at least one non-bipartite component in the graph; or number of CC otherwise | 234 | 3.9 |

molekule | molekule | 4.2e, Graph Properties Check | undirected tree is also Bipartite/bi-colorable; bi-color it with 0 and 1; direct all edges from 0 to 1 (or vice versa) | 175 | 3.5 |

pubs | pubs | 4.2e, Graph Properties Check | isolated vertex has no solution; this is actually not a bipartite graph check; we can do alternate labeling of vertices ... | 216 | 3.5 |

runningmom | runningmom | 4.2e, Graph Properties Check | find a cycle in a directed graph | 591 | 3.8 |

torn2pieces | torn2pieces | 4.2e, Graph Properties Check | construct graph from strings; traversal from source to target; reachability check; print path | 1115 | 3.6 |

birthday | birthday | 4.2f, Cut Vertices/Bridges | check if the input graph contains any bridge; N is small though so weaker solution can still be accepted | 323 | 4.3 |

caveexploration | caveexploration | 4.2f, Cut Vertices/Bridges | find size of bi-connected components that contains vertex 0; identify the bridges | 306 | 3.4 |

gymleadersterritory | gymleadersterritory | 4.2f, Cut Vertices/Bridges | if all edges connected to vertex k are bridges, then `YES`; otherwise `NO` | 135 | 3.4 |

intercept | intercept | 4.2f, Cut Vertices/Bridges | Articulation Points in SSSP Spanning DAG; clever modification of Dijkstra's | 112 | 6.6 |

kingpinescape | kingpinescape | 4.2f, Cut Vertices/Bridges | DFS from headquarter (may also be a leaf); find all L leaves; add ceil(L/2.0) edges to connect 2 leaves (correctly) to p... | 54 | 6.5 |

cantinaofbabel | cantinaofbabel | 4.2g, Finding SCCs | build directed graph 'can_speak'; compute the largest SCC of 'can_speak'; keep this largest SCC | 379 | 3.5 |

dominos | dominos | 4.2g, Finding SCCs | count the number of SCCs without incoming edge from a vertex outside that SCC; also available at UVa 11504 - Dominos | 248 | 6.2 |

equivalences | equivalences | 4.2g, Finding SCCs | contract input directed graph into SCCs; count SCCs that have in-/out-degrees = 0; report the max | 281 | 5.4 |

loopycabdrivers | loopycabdrivers | 4.2g, Finding SCCs | print all SCCs that have size ≥ 2; tricky output ordering | 55 | 5.5 |

reversingroads | reversingroads | 4.2g, Finding SCCs | small graph; if #SCC = 1, print 'valid'; otherwise try reversing one of the m directed edges one by one until we either ... | 274 | 4.4 |

test2 | test2 | 4.2g, Finding SCCs | SCC + printing solution; also available at UVa 10731 - Test | 20 | 5.5 |

ads | ads | 4.2h, Really Ad Hoc | modified traversal; can we reach an illegal character from a frame - remove that ads once | 218 | 5.1 |

brickwall | brickwall | 4.2h, Really Ad Hoc | s: (n1, n2, n3); number of type 1/2/3 bricks used so far; max is (c1, c2, c3); prefix sum to check if a position has a b... | 91 | 5.1 |

connectn | connectn | 4.2h, Really Ad Hoc | ad hoc straight-line (implicit) graph traversal | 397 | 3.1 |

droppingdirections | droppingdirections | 4.2h, Really Ad Hoc | modified graph: a vertex is (origin intersection id, intersection id); modified DFS from vertices leading to goal; count... | 87 | 3.5 |

faultyrobot | faultyrobot | 4.2h, Really Ad Hoc | interesting graph traversal variant | 182 | 4.5 |

promotions | promotions | 4.2h, Really Ad Hoc | modified DFS; special graph; DAG; also available at UVa 13015 - Promotions | 129 | 5.5 |

silueta | silueta | 4.2h, Really Ad Hoc | 2D grid processing initially; modified DFS to count perimeter of polygon in grid | 37 | 5.3 |

succession | succession | 4.2h, Really Ad Hoc | (upwards) traversal of family DAG; use unordered_maps; make the founder has very large starting blood to avoid fraction | 165 | 3.1 |

buildinghighways | buildinghighways | 4.3a, MST, Standard | this is a special MST problem; the final solution is just a formula | 1624 | 1.9 |

cats | cats | 4.3a, MST, Standard | standard MST | 456 | 4.1 |

cheatingstudents | cheatingstudents | 4.3a, MST, Standard | standard MST; times two | 181 | 3.2 |

communicationssatellite | communicationssatellite | 4.3a, MST, Standard | standard MST; complete graph with n ≤ 2 000 | 227 | 3.5 |

drivingrange | drivingrange | 4.3a, MST, Standard | find weight of the last edge added to MST by Kruskal's; also available at UVa 11857 - Driving Range | 336 | 3.5 |

freckles | freckles | 4.3a, MST, Standard | straightforward MST problem; also available at UVa 10034 - Freckles | 412 | 4.6 |

islandhopping | islandhopping | 4.3a, MST, Standard | MST on small complete graph | 440 | 3.0 |

jurassicjigsaw | jurassicjigsaw | 4.3a, MST, Standard | just a reading comprehension problem; afterwards it is just a basic MST problem | 110 | 2.2 |

lostmap | lostmap | 4.3a, MST, Standard | actually just a standard MST problem | 782 | 2.1 |

minspantree | minspantree | 4.3a, MST, Standard | very standard MST problem; check if a spanning tree is formed; also output the edges in any spanning tree in lexicograph... | 862 | 4.0 |

arcticnetwork | arcticnetwork | 4.3b, MST, Variants | minimum spanning 'forest'; also available at UVa 10369 - Arctic Networks | 435 | 4.4 |

firetrucksarered | firetrucksarered | 4.3b, MST, Variants | output any spanning tree that connects n people | 162 | 3.4 |

inventing | inventing | 4.3b, MST, Variants | clever modification of Kruskal's; every time two CCs are about to be connected, give weight (w+1) to all pairs of edges ... | 75 | 3.8 |

landline | landline | 4.3b, MST, Variants | MST with special leaf vertices; get (M)ST of secure buildings; connect unsecure buildings (new leaf) to (M)ST of secure ... | 168 | 5.7 |

millionairemadness | millionairemadness | 4.3b, MST, Variants | MiniMax path problem | 649 | 2.4 |

muddyhike | muddyhike | 4.3b, MST, Variants | MiniMax path problem | 209 | 3.9 |

naturereserve | naturereserve | 4.3b, MST, Variants | Prim's algorithm from multiple sources | 180 | 4.6 |

treehouses | treehouses | 4.3b, MST, Variants | 'minimum' spanning subgraph; very similar to UVa 10397 | 185 | 4.2 |

buttonbashing | buttonbashing | 4.4a, SSSP, BFS, Easier | very similar to UVa 12160 | 728 | 3.4 |

elevatortrouble | elevatortrouble | 4.4a, SSSP, BFS, Easier | s: (cur_level); only 1M floors; go up/down; BFS | 362 | 3.1 |

grid | grid | 4.4a, SSSP, BFS, Easier | modified BFS with step size multiplier | 1026 | 2.8 |

horror | horror | 4.4a, SSSP, BFS, Easier | SSSP from all sources = horror movies; report lowest ID with the highest unweighted SSSP distance | 500 | 3.3 |

modulosolitaire | modulosolitaire | 4.4a, SSSP, BFS, Easier | s: (cur_sj); try all n (n ≤ 10) possible moves; BFS | 286 | 3.0 |

onaveragetheyrepurple | onaveragetheyrepurple | 4.4a, SSSP, BFS, Easier | reading comprehension; the answer is just unweighted SSSP from 1 to N, minus one; BFS | 518 | 3.1 |

spiral | spiral | 4.4a, SSSP, BFS, Easier | generate the 2D 100x100 spiraling grid first; involving small primes; BFS | 148 | 3.5 |

wettiles | wettiles | 4.4a, SSSP, BFS, Easier | multi-sources BFS; limited flood fill or unweighted SSSP limited to step T | 227 | 3.6 |

beehives2 | beehives2 | 4.4b, SSSP, BFS, Harder | find the girth (length of shortest cycle) of input graph; multiple calls of BFS | 98 | 4.4 |

bryr | bryr | 4.4b, SSSP, BFS, Harder | 0/1-weighted SSSP; solvable with BFS and deque; 0-weight for single-lane bridge, 1-weight for double-lane bridge | 70 | 2.5 |

colorland | colorland | 4.4b, SSSP, BFS, Harder | BFS; use binary search on sorted indices of color locations to get the next spot with the same color | 17 | 4.3 |

conquestcampaign | conquestcampaign | 4.4b, SSSP, BFS, Harder | multi-sources BFS | 353 | 1.9 |

dungeon | dungeon | 4.4b, SSSP, BFS, Harder | 3D BFS; also available at UVa 00532 - Dungeon Master | 288 | 3.6 |

erdosnumbers | erdosnumbers | 4.4b, SSSP, BFS, Harder | use unordered_map as Adjacency List of author names; BFS from 'PAUL_ERDOS' | 159 | 4.4 |

erraticants | erraticants | 4.4b, SSSP, BFS, Harder | simulate; move twice per single move to differentiate the path; revisit the path using BFS | 340 | 5.1 |

escapewallmaria | escapewallmaria | 4.4b, SSSP, BFS, Harder | BFS on grid graph; generate edges dynamically according to the rules | 32 | 2.7 |

fire2 | fire2 | 4.4b, SSSP, BFS, Harder | very similar to UVa 11624 | 395 | 4.2 |

fire3 | fire3 | 4.4b, SSSP, BFS, Harder | multi-sources BFS; also available at UVa 11624 - Fire! | 289 | 5.4 |

landlocked | landlocked | 4.4b, SSSP, BFS, Harder | 0/1-weighted SSSP; 0-weight for same country; 1-weight for different country; multi-sources; BFS+deque; 8 directions | 42 | 4.6 |

lava | lava | 4.4b, SSSP, BFS, Harder | BFS; interesting output; very real life situation | 79 | 4.5 |

lost | lost | 4.4b, SSSP, BFS, Harder | interesting twist of BFS/SSSP spanning tree | 269 | 4.7 |

mallmania | mallmania | 4.4b, SSSP, BFS, Harder | multi-sources BFS from m1; get minimum at border of m2; also available at UVa 11101 - Mall Mania | 48 | 4.9 |

oceancurrents | oceancurrents | 4.4b, SSSP, BFS, Harder | 0/1-weighted SSSP; BFS+deque; also available at UVa 11573 - Ocean Currents | 118 | 5.4 |

showroom | showroom | 4.4b, SSSP, BFS, Harder | 0/1-weighted SSSP; solvable with BFS and deque; 0-weight for passing a door, 1-weight for passing a car | 256 | 4.4 |

sixdegrees | sixdegrees | 4.4b, SSSP, BFS, Harder | map strings to integers; BFS from all sources; prune at depth 6; compare size of unreachable vertices with the size of a... | 83 | 5.3 |

slikar | slikar | 4.4b, SSSP, BFS, Harder | very similar to Kattis - fire2 and UVa 11624 | 204 | 3.4 |

zoning | zoning | 4.4b, SSSP, BFS, Harder | multi-sources BFS | 140 | 4.5 |

grasshopper | grasshopper | 4.4c, Knight Moves | BFS on implicit Knight jump graph | 136 | 4.0 |

hidingplaces | hidingplaces | 4.4c, Knight Moves | SSSP from (r, c); find cells with max distance; print | 607 | 1.9 |

knightjump | knightjump | 4.4c, Knight Moves | unweighted SSSP from the cell that contains 'K' to (1, 1) using Knight jump movements; avoid '#' cells | 292 | 2.5 |

flowerytrails | flowerytrails | 4.4d, SSSP, Dijkstra, Easier | Dijkstra's; record predecessor graph as there can be multiple shortest paths; also available at UVa 12878 - Flowery Trai... | 305 | 3.9 |

george | george | 4.4d, SSSP, Dijkstra, Easier | not easy, rating deceptive: Dijkstra's but with a few constraints; some roads are blocked at certain timings; similar wi... | 205 | 2.0 |

getshorty | getshorty | 4.4d, SSSP, Dijkstra, Easier | log(f) when f in [0..1] is negative; log(f1 * f2 * ... * fn) = log(f1) + log(f2) + ... + log(fn); longest path; use max... | 1572 | 3.4 |

hopscotch50 | hopscotch50 | 4.4d, SSSP, Dijkstra, Easier | MSSP from all 1s; implicit weighted graph; stop at first cell with value k | 200 | 2.3 |

shortestpath1 | shortestpath1 | 4.4d, SSSP, Dijkstra, Easier | very standard Dijkstra's problem | 1470 | 3.5 |

shortestpath2 | shortestpath2 | 4.4d, SSSP, Dijkstra, Easier | Dijkstra's with modification; edges only available periodically; be careful with P = 0 case | 423 | 3.9 |

subway2 | subway2 | 4.4d, SSSP, Dijkstra, Easier | use basic geometry skill to build the weighted graph; then run Dijkstra's; also available at UVa 10389 - Subway | 70 | 5.9 |

texassummers | texassummers | 4.4d, SSSP, Dijkstra, Easier | Dijkstra's; complete weighted graph; print path | 97 | 4.0 |

backpackbuddies | backpackbuddies | 4.4e, SSSP, Dijkstra, Harder | Run Dijkstra's 2x on slightly different graphs; be careful of corner cases | 84 | 4.6 |

blockcrusher | blockcrusher | 4.4e, SSSP, Dijkstra, Harder | Dijkstra's from top row to bottom row (or vice versa); print path | 257 | 5.1 |

detour | detour | 4.4e, SSSP, Dijkstra, Harder | SSSP from destination/Amsterdam; from all vertices, block outgoing edge that is part of the shortest paths to destinatio... | 167 | 4.0 |

emptyingbaltic | emptyingbaltic | 4.4e, SSSP, Dijkstra, Harder | Dijkstra's variant; grow spanning tree from drain/source | 287 | 5.4 |

firestation | firestation | 4.4e, SSSP, Dijkstra, Harder | Dijkstra's from fire stations to all intersections; need pruning to pass the time limit; also available at UVa 10278 - F... | 67 | 6.5 |

forestfruits | forestfruits | 4.4e, SSSP, Dijkstra, Harder | Dijkstra's from clearing 1; sort clearings with fruits by increasing distances; find the required formula; be careful of... | 103 | 4.1 |

fulltank | fulltank | 4.4e, SSSP, Dijkstra, Harder | model the graph carefully; state: (location, fuel), source s = (s, 0), sink t = (e, any), only enqueue fuel+1; also avai... | 192 | 4.8 |

geezerscripts | geezerscripts | 4.4e, SSSP, Dijkstra, Harder | model the directed weighted graph carefully; Dijkstra's | 68 | 2.7 |

gruesomecave | gruesomecave | 4.4e, SSSP, Dijkstra, Harder | need to understand the meaning of 'risk' of an empty cell; SSSP from E to D using least risky path; Dijkstra's | 87 | 3.6 |

invasion | invasion | 4.4e, SSSP, Dijkstra, Harder | SSSP with multiple and successive sources; multiple calls of Dijkstra's (gets lighter each time if pruned properly) | 46 | 4.3 |

passingsecrets | passingsecrets | 4.4e, SSSP, Dijkstra, Harder | harder form of Dijkstra's; print path | 36 | 4.9 |

shoppingmalls | shoppingmalls | 4.4e, SSSP, Dijkstra, Harder | special graph construction; multiple queries; Dijkstra's and print path | 79 | 4.5 |

tide | tide | 4.4e, SSSP, Dijkstra, Harder | SSSP with complex rules; 3 different weights (0, 1, or 10 seconds); Dijkstra's | 21 | 5.4 |

upandaway | upandaway | 4.4e, SSSP, Dijkstra, Harder | s: (m, k_left); t: next mountain; SSSP | 70 | 4.6 |

visualgo | visualgo | 4.4e, SSSP, Dijkstra, Harder | Dijkstra's produces SSSP spanning DAG if there are multiple shortest paths from s to t; counting paths on DAG | 496 | 3.4 |

crosscountry | crosscountry | 4.4f, SSSP, -ve weight | medium complete graph with N ≤ 1000; Bellman-Ford can still pass (or use Dijkstra's) | 217 | 3.0 |

hauntedgraveyard | hauntedgraveyard | 4.4f, SSSP, -ve weight | Bellman-Ford; negative cycle check needed | 95 | 8.2 |

shortestpath3 | shortestpath3 | 4.4f, SSSP, -ve weight | Bellman-Ford; do DFS/BFS from vertices that are part of any negative cycle | 524 | 5.1 |

xyzzy | xyzzy | 4.4f, SSSP, -ve weight | check 'positive' cycle; check connectedness; also available at UVa 10557 | 152 | 6.7 |

allpairspath | allpairspath | 4.5a, APSP, Standard | basic Floyd-Warshall; tricky negative cycle checks | 772 | 5.5 |

importspaghetti | importspaghetti | 4.5a, APSP, Standard | smallest cycle; print path by breaking the self-loop into i - other vertex j - i | 292 | 5.1 |

slowleak | slowleak | 4.5a, APSP, Standard | APSP; FW twice | 279 | 5.6 |

transportationplanning | transportationplanning | 4.5a, APSP, Standard | APSP; FW; for each unused edge, use it and see how much distance is reduced; get minimum; O(n^4) | 65 | 3.9 |

arbitrage | arbitrage | 4.5b, APSP, Variants | arbitrage problem; similar to UVa 00104 and 00436 | 324 | 3.3 |

assembly | assembly | 4.5b, APSP, Variants | we can model the problem as a small connectivity graph; use Warshall's transitive closure algorithm to check if there is... | 305 | 3.9 |

isahasa | isahasa | 4.5b, APSP, Variants | map strings to integers; the real n is ≤ 500; Warshall's transitive closure algorithm 2x; first on 'is' relationships... | 171 | 7.2 |

kastenlauf | kastenlauf | 4.5b, APSP, Variants | n ≤ 100; Warshall's transitive closure problem | 713 | 3.8 |

secretchamber | secretchamber | 4.5b, APSP, Variants | LA 8047 - WorldFinals RapidCity17; Warshall's transitive closure; also available at UVa 01757 - Secret Chamber ... | 1187 | 2.2 |

baas | baas | 4.6a, S/Longest Paths on DAG | try all possible vertex to be 'optimized'; LONGEST-PATH on DAG | 55 | 4.5 |

delftdistance | delftdistance | 4.6a, S/Longest Paths on DAG | SSSP on DAG (4 N/E/S/W vertices on each square/round buildings); t: two straights, two 90 degrees straight turns, two ro... | 161 | 3.8 |

excavatorexpedition | excavatorexpedition | 4.6a, S/Longest Paths on DAG | s: (pos); t: try all directed edge; +1/-1 weight; LONGEST-PATH on DAG problem; be careful of negative final answer | 70 | 5.4 |

fibtour | fibtour | 4.6a, S/Longest Paths on DAG | only ~90 Fibonacci numbers not more than 10^18; LONGEST-PATH on DAG problem; special case for first two Fibonacci number... | 105 | 6.4 |

monopoly | monopoly | 4.6a, S/Longest Paths on DAG | K, b, r are all irrelevant; vertex value is either +ve (salary) or -ve (tax); LONGEST-PATH on DAG (u < v); exclude so... | 69 | 3.0 |

mravi | mravi | 4.6a, S/Longest Paths on DAG | reverse edge directions to change the input tree into a DAG; find longest path from leaf that contains ant to root | 197 | 2.7 |

safepassage | safepassage | 4.6a, S/Longest Paths on DAG | SSSP; implicit DAG; s: (cloak_pos, bitmask); try all ways to go back and forth between gate and dorm; report minimum | 387 | 4.9 |

savinguniverse | savinguniverse | 4.6a, S/Longest Paths on DAG | s: (cur_SE; Q_pos); t: stay in this search engine or switch to one other; unweighted SSSP on DAG | 122 | 4.7 |

compositions | compositions | 4.6b, Counting Paths, Easier | LA 7365 - Greater NY15; s: (N_left); t: try all values, skip some numbers | 160 | 2.3 |

helpfulcurrents | helpfulcurrents | 4.6b, Counting Paths, Easier | problem description ensures a DAG; counting path modulo 1000003; output "begin repairs" if Lysias's castle is unreachabl... | 51 | 5.3 |

marypartitions | marypartitions | 4.6b, Counting Paths, Easier | 3 ≤ m, so we will only use a few power values; counting paths on DAG | 245 | 3.5 |

robotsonagrid | robotsonagrid | 4.6b, Counting Paths, Easier | counting paths in grid (implicit DAG); DP | 147 | 4.3 |

runningsteps | runningsteps | 4.6b, Counting Paths, Easier | LA 7360 - Greater NY15; s: (leg, l2, r2, l1, r1); t: left/right leg 1/2 steps; use unordered_map as memo table; use prun... | 168 | 2.6 |

scenes | scenes | 4.6b, Counting Paths, Easier | s: (pos, ribbon_left); t: try all possible heights; ignore the flat scenes first and subtract those cases at the end | 407 | 3.6 |

adventuremoving4 | adventuremoving4 | 4.6c, Conversion to DAG | s: (pos, fuel_left); also available at UVa 10201 - Adventures in Moving - Part IV | 315 | 5.4 |

cardmagic | cardmagic | 4.6c, Conversion to DAG | s: (deck, tgt_left); t: val 1 to K ≤ tgt_left | 133 | 3.9 |

drinkresponsibly | drinkresponsibly | 4.6c, Conversion to DAG | s: (cur_drink, money_left, u_left); be careful with precision errors; print solution | 98 | 4.2 |

maximizingwinnings | maximizingwinnings | 4.6c, Conversion to DAG | separate the maximizing and minimizing problem; s: (cur_room, turns_left); t: go to other room or stay | 193 | 3.9 |

quantumsuperposition | quantumsuperposition | 4.6c, Conversion to DAG | s: (id, u, step); id is either DAG 1 or DAG 2, u is current vertex, step is the number of step used; t: try all neighbor... | 172 | 6.0 |

shortestpath4 | shortestpath4 | 4.6c, Conversion to DAG | s: (u, vtx_left); t: neighbors of u | 76 | 3.0 |

adjoin | adjoin | 4.6d, Tree | the key parts are finding tree diameter and its center (along that diameter); also see UVa 11695 | 373 | 5.3 |

appealtotheaudience | appealtotheaudience | 4.6d, Tree | LONGEST-PATH on tree + greedy matching (strongest player plays the most and so on) | 31 | 3.1 |

decisions | decisions | 4.6d, Tree | collapse a sub-tree into a super vertex if all f values on its leaves are equal; count size of min BDD tree recursively | 151 | 3.1 |

flight | flight | 4.6d, Tree | cut the worst edge along the tree diameter; link two centers; also available at UVa 11695 - Flight Planning | 46 | 6.3 |

frozenrose | frozenrose | 4.6d, Tree | tree traversal; is it better to close the valve that goes in to a vertex u or close subset of valve(s) in subtree of u | 56 | 3.5 |

kitten | kitten | 4.6d, Tree | simple rooted tree traversal; from a vertex back to root | 1278 | 1.7 |

mazemakers | mazemakers | 4.6d, Tree | long problem statement to describe a custom 2D grid graph; just a graph traversal: check if all cells are visited and th... | 171 | 2.8 |

tourists | tourists | 4.6d, Tree | APSP on Tree (special requirements); LCA | 431 | 3.8 |

whostheboss | whostheboss | 4.6d, Tree | sort; create the tree graph; DFS from root; parent array and size of subtree (a bit of DP) | 29 | 6.1 |

absurdistan3 | absurdistan3 | 4.6e, Bipartite Graph | can be modeled as MCBM; or greedy graph construction with PQ | 312 | 5.6 |

bookclub | bookclub | 4.6e, Bipartite Graph | check if perfect MCBM is possible | 307 | 4.5 |

elementarymath | elementarymath | 4.6e, Bipartite Graph | left set: (a, b); right set: possible scores; possible if MCBM = n; use long long | 365 | 5.1 |

escapeplan | escapeplan | 4.6e, Bipartite Graph | left set: robots; right set: holes; 3 version of similar bipartite graphs; MCBM | 98 | 5.7 |

flippingcards | flippingcards | 4.6e, Bipartite Graph | left set: n card numbers; right set: 2*n picture numbers; possible if MCBM = n; need fast algorithm | 169 | 7.0 |

gopher2 | gopher2 | 4.6e, Bipartite Graph | MCBM; also available at UVa 10080 - Gopher II | 337 | 4.3 |

paintball | paintball | 4.6e, Bipartite Graph | very similar with bookclub | 335 | 4.3 |

pianolessons | pianolessons | 4.6e, Bipartite Graph | straightforward MCBM | 151 | 4.5 |

catenyms | catenyms | 4.6f, Eulerian Graph | Euler graph property check; 26 vertices; directed non simple graph; printing the Euler tour in lexicographic order | 67 | 7.1 |

eulerian | eulerian | 4.6f, Eulerian Graph | basic Eulerian graph property checks | 58 | 2.9 |

eulerianpath | eulerianpath | 4.6f, Eulerian Graph | Euler graph property check; directed graph; printing the Euler tour | 219 | 5.6 |

grandopening | grandopening | 4.6f, Eulerian Graph | false alarm case is trivial; model the movement as a directed graph; check if Eulerian path exists | 89 | 5.9 |

railroad2 | railroad2 | 4.6f, Eulerian Graph | x-shaped level junctions have even degrees - ignore X; y-shaped switches have degree 3 - Y has to be even | 2188 | 1.4 |

alloys | alloys | 5.2a, Finding Formula, Easier | easy formula; be careful when c < 1.0 | 202 | 3.8 |

averageseasy | averageseasy | 5.2a, Finding Formula, Easier | find O(n) formula; also see Kattis - averageshard | 758 | 2.4 |

averageshard | averageshard | 5.2a, Finding Formula, Easier | find O(n) formula; also see Kattis - averageseasy | 605 | 2.6 |

bishops | bishops | 5.2a, Finding Formula, Easier | chess pattern involving bishops; from IPSC 2004 | 1185 | 2.2 |

chanukah | chanukah | 5.2a, Finding Formula, Easier | simple formula involving sum of arithmetic progression | 1064 | 1.5 |

crne | crne | 5.2a, Finding Formula, Easier | simulate cutting process on small numbers; get formula | 477 | 2.5 |

distributingpoffins | distributingpoffins | 5.2a, Finding Formula, Easier | easy pattern; either 0 or 1 | 158 | 2.1 |

electricaloutlets | electricaloutlets | 5.2a, Finding Formula, Easier | there is a one liner formula for this problem; don't overthink it | 179 | 1.3 |

eveningout1 | eveningout1 | 5.2a, Finding Formula, Easier | take the minimum of A%B or B-A%B | 202 | 2.6 |

geneblock | geneblock | 5.2a, Finding Formula, Easier | deduct by 7 until N ends with a 7 | 304 | 2.0 |

lastminute | lastminute | 5.2a, Finding Formula, Easier | greedily pair A/B unique with A/B reuse to maximize the answer; simple formula | 63 | 2.2 |

limbo1 | limbo1 | 5.2a, Finding Formula, Easier | if we go L only, we have 1,2,4,7,11,16; then add R | 127 | 3.5 |

longestprimesum | longestprimesum | 5.2a, Finding Formula, Easier | just divide by 2 | 296 | 2.2 |

malfunctioningrobot | malfunctioningrobot | 5.2a, Finding Formula, Easier | Manhattan Distance with zig zag pattern; special case (-1) for different dx/dy parities | 103 | 2.2 |

ordinals | ordinals | 5.2a, Finding Formula, Easier | find the pattern up to n = 8; pre-calculate-able | 312 | 1.9 |

pauleigon | pauleigon | 5.2a, Finding Formula, Easier | easy to derive | 1614 | 1.8 |

sequentialmanufacturing | sequentialmanufacturing | 5.2a, Finding Formula, Easier | we can control the input; the answer involves max element | 51 | 2.9 |

soylent | soylent | 5.2a, Finding Formula, Easier | ceiling function | 3008 | 1.7 |

spehrling | spehrling | 5.2a, Finding Formula, Easier | find the simple formula | 209 | 2.2 |

sumkindofproblem | sumkindofproblem | 5.2a, Finding Formula, Easier | sum of arithmetic progression | 3258 | 1.7 |

twostones | twostones | 5.2a, Finding Formula, Easier | just check odd or even | 15317 | 1.3 |

appallingarchitecture | appallingarchitecture | 5.2b, Finding Formula, Harder | get formula of center of gravity; involving averages | 139 | 4.0 |

beautifulprimes | beautifulprimes | 5.2b, Finding Formula, Harder | use all 2s first; use 11 to increase digits | 171 | 4.1 |

dickandjane | dickandjane | 5.2b, Finding Formula, Harder | need some mathematical insights; also available at UVa 10257 - Dick and Jane | 87 | 5.8 |

doorman | doorman | 5.2b, Finding Formula, Harder | find the required formula | 1116 | 2.3 |

eatingout | eatingout | 5.2b, Finding Formula, Harder | there is a one liner formula for this problem | 480 | 3.1 |

floorplan | floorplan | 5.2b, Finding Formula, Harder | do not brute force; there are easy ways to generate the answer with simple formulas | 213 | 3.5 |

howmanyzeros | howmanyzeros | 5.2b, Finding Formula, Harder | find formula to count 0's from 0 to x; inclusion-exclusion | 498 | 4.2 |

invokereasy | invokereasy | 5.2b, Finding Formula, Harder | convoluted problem statement; derive the short formula | 130 | 2.2 |

limbo2 | limbo2 | 5.2b, Finding Formula, Harder | the expansion alternates right/down; filling order alternates down/right; size doubles each time | 44 | 3.5 |

loorolls | loorolls | 5.2b, Finding Formula, Harder | Nick replaces his regular roll immediately; but he does NOT do that immediately with his backup rolls k = 2, 3, ... | 258 | 1.9 |

mortgage | mortgage | 5.2b, Finding Formula, Harder | geometric progression; divergent but finite; special case when r = 1.0 (no interest) | 51 | 7.9 |

neighborhoodwatch | neighborhoodwatch | 5.2b, Finding Formula, Harder | sum of AP; inclusion-exclusion | 319 | 3.1 |

nine | nine | 5.2b, Finding Formula, Harder | find the required formula | 681 | 3.2 |

otherside | otherside | 5.2b, Finding Formula, Harder | there is an O(1) solution for this problem; not easy to spot though | 351 | 5.0 |

pleasegofirst | pleasegofirst | 5.2b, Finding Formula, Harder | linear pass; monitor size of group and last appearance of member of the group to compute the savings | 90 | 3.0 |

pyramidkonstruktion | pyramidkonstruktion | 5.2b, Finding Formula, Harder | sum of AP; maximize 4x2 LEGO bricks; we can merge two 2x2 LEGO bricks into one 4x2; we need one 2x2 LEGO brick for the t... | 58 | 3.1 |

rectangularspiral | rectangularspiral | 5.2b, Finding Formula, Harder | the first 3 minimal moves always 1R, 2U, 3D that will bring us to coordinate (-2, 2); case analysis | 96 | 3.3 |

sequence | sequence | 5.2b, Finding Formula, Harder | this is NOT an LIS problem; the longest possible answer is a LIS that consists of powers of twos | 310 | 3.6 |

alienmath | alienmath | 5.2c, Base Number Conversion | a bit of string processing, then base conversion | 208 | 2.9 |

allaboutthatbase | allaboutthatbase | 5.2c, Base Number Conversion | check base 1 to 36; base 1 is special; Big Integer | 927 | 2.9 |

arithmetic | arithmetic | 5.2c, Base Number Conversion | conversion of octal (per 4 bits) to hexa (per 3 bits); be careful with leading zeroes | 726 | 3.9 |

arithmeticdecoding | arithmeticdecoding | 5.2c, Base Number Conversion | binary to decimal; but do as asked | 46 | 3.1 |

basicremains | basicremains | 5.2c, Base Number Conversion | also involving Big Integer modulo; also available at UVa 10551 - Basic Remains | 174 | 3.4 |

oktalni | oktalni | 5.2c, Base Number Conversion | convert each 3-bits of binary strings to octal; Big Integer | 634 | 1.8 |

whichbase | whichbase | 5.2c, Base Number Conversion | try reading input in base 8/10/16 | 523 | 2.4 |

aliennumbers | aliennumbers | 5.2d, Base Number Variants | source base to decimal; decimal to target base | 1050 | 2.1 |

babylonian | babylonian | 5.2d, Base Number Variants | base 60 | 464 | 2.2 |

basic | basic | 5.2d, Base Number Variants | parsing; state processing; base number; tedious | 47 | 6.4 |

crypto | crypto | 5.2d, Base Number Variants | assert(N <= 100000000) does NOT get RTE; so brute force can actually pass... | 270 | 3.7 |

ignore | ignore | 5.2d, Base Number Variants | actually a base 7 conversion problem as only 7 digits are meaningful when rotated | 268 | 3.2 |

mixedbasearithmetic | mixedbasearithmetic | 5.2d, Base Number Variants | mix of base 10 and two versions of base 26 | 54 | 5.9 |

parsinghex | parsinghex | 5.2d, Base Number Variants | a bit of string parsing; hexadecimal to decimal | 529 | 2.9 |

slystudents | slystudents | 5.2d, Base Number Variants | compute gcd; convert decimal to base 3 | 72 | 2.5 |

sumsquareddigits | sumsquareddigits | 5.2d, Base Number Variants | base number conversion; square the digits | 1503 | 1.4 |

candlebox | candlebox | 5.2e, Number Systems/Seqs | sum of arithmetic series [1..N]; -6 for Rita or -3 for Theo; brute force Rita's age; also available at UVa 13161 - Candl... | 448 | 2.6 |

collatz | collatz | 5.2e, Number Systems/Seqs | similar to UVa 00694; just do as asked | 757 | 3.7 |

hailstone | hailstone | 5.2e, Number Systems/Seqs | similar to Kattis - collatz; just do as asked; no need to write recursive solution | 224 | 3.2 |

permutedarithmeticsequence | permutedarithmeticsequence | 5.2e, Number Systems/Seqs | sort differences of adjacent items | 1262 | 2.0 |

rationalsequence | rationalsequence | 5.2e, Number Systems/Seqs | pattern finding; tree traversal on a special tree | 458 | 4.6 |

sheldon | sheldon | 5.2e, Number Systems/Seqs | brute force; try all possibilities of Sheldon Numbers; convert binary string to ULL; put into sorted set | 129 | 4.8 |

3dprinter | 3dprinter | 5.2f, Log, Exp, Pow | ceil(log2(n))+1 | 3758 | 2.0 |

bestcompression | bestcompression | 5.2f, Log, Exp, Pow | related to power of two; use long long; also available at UVa 11556 - Best Compression Ever | 719 | 2.1 |

bus | bus | 5.2f, Log, Exp, Pow | involving powers of two | 1785 | 1.7 |

cokolada | cokolada | 5.2f, Log, Exp, Pow | the answers involve powers of two and a simulation | 605 | 2.2 |

differentdistances | differentdistances | 5.2f, Log, Exp, Pow | power | 1833 | 1.6 |

factstone | factstone | 5.2f, Log, Exp, Pow | use logarithm; power; also available at UVa 10916 - Factstone Benchmark | 200 | 3.6 |

lemonadetrade | lemonadetrade | 5.2f, Log, Exp, Pow | use logarithm transformation technique; linear pass | 82 | 5.3 |

pot | pot | 5.2f, Log, Exp, Pow | the power is always the last digit | 8562 | 1.3 |

schoolspirit | schoolspirit | 5.2f, Log, Exp, Pow | compute group score using power of 0.8 as described; simulation | 371 | 1.5 |

slatkisi | slatkisi | 5.2f, Log, Exp, Pow | power of 10; division; rounding | 331 | 2.3 |

stirlingsapproximation | stirlingsapproximation | 5.2f, Log, Exp, Pow | O(n) pass; use log transformation to help beat TLE | 157 | 4.5 |

tetration | tetration | 5.2f, Log, Exp, Pow | n to the power of 1/n | 718 | 1.6 |

thebackslashproblem | thebackslashproblem | 5.2f, Log, Exp, Pow | actually power of two | 349 | 2.2 |

triangle | triangle | 5.2f, Log, Exp, Pow | use log 10 to compute the required answer | 722 | 2.7 |

beehouseperimeter | beehouseperimeter | 5.2g, Grid | transform the hexagonal grid like Kattis - honeyheist; flood fill from outside Alice's house; count #walls touched | 155 | 4.0 |

fleaonachessboard | fleaonachessboard | 5.2g, Grid | just simulate the jumps; also available at UVa 10620 - A Flea on a Chessboard | 77 | 5.7 |

honeyheist | honeyheist | 5.2g, Grid | transform the hexagonal grid input into 2D grid first; then run SSSP on unweighted graph; BFS | 135 | 3.8 |

maptiles2 | maptiles2 | 5.2g, Grid | simple conversion between two grid indexing systems | 1338 | 1.6 |

settlers2 | settlers2 | 5.2g, Grid | we can convert a hexagonal grid into a 2D grid | 224 | 4.2 |

ada | ada | 5.2h, Polynomial | polynomial problem; apply the given procedure recursively | 346 | 2.8 |

bastubad | bastubad | 5.2h, Polynomial | sort the Finns by non-increasing t; add quadratic equations; take max at f(0), f(t), and if a is negative, also f(-b/2a)... | 133 | 4.2 |

curvyblocks | curvyblocks | 5.2h, Polynomial | differentiate degree 3 to degree 2 polynomial; get roots of quadratic equation; the two blocks will touch at either root... | 89 | 4.3 |

hammingellipses | hammingellipses | 5.2h, Polynomial | reduce this problem into a series of polynomial multiplications; we can still use O(n^2) polynomial multiplication; or D... | 97 | 3.2 |

plot | plot | 5.2h, Polynomial | analyze the given pseudocode; the required pattern involves Binomial Coefficients | 210 | 2.5 |

polymul1 | polymul1 | 5.2h, Polynomial | basic polynomial multiplication problem | 646 | 2.0 |

bestrational | bestrational | 5.2i, Fractions | just use limit_denominator of Fraction class in Python | 153 | 4.9 |

deadfraction | deadfraction | 5.2i, Fractions | try every single possible repeating decimals; also available at UVa 10555 - Dead Fraction | 153 | 4.9 |

fraction | fraction | 5.2i, Fractions | continued fraction to normal fraction and vice versa | 154 | 3.8 |

fractionallotion | fractionallotion | 5.2i, Fractions | brute force x > n; compute y; stop when y < x | 349 | 2.9 |

jointattack | jointattack | 5.2i, Fractions | fraction; flip the fraction after each step; gcd | 182 | 2.6 |

mixedfractions | mixedfractions | 5.2i, Fractions | convert fraction to mixed fraction | 5154 | 1.5 |

rationalarithmetic | rationalarithmetic | 5.2i, Fractions | fraction; use GCD to simplify output | 661 | 3.3 |

rationalratio | rationalratio | 5.2i, Fractions | express repeating decimal as reduced fraction; use Python fractions | 216 | 5.5 |

temperatureconfusion | temperatureconfusion | 5.2i, Fractions | simple conversion; fraction; GCD | 393 | 2.1 |

thermostat | thermostat | 5.2i, Fractions | convert one temperature to another; use fraction; use Java BigInteger; gcd | 81 | 3.4 |

matrix | matrix | 5.2j, Really Ad Hoc | use simple linear algebra; one special case when c = 0 | 784 | 3.1 |

trip | trip | 5.2j, Really Ad Hoc | be careful with precision error; also available at UVa 10137 - The Trip | 103 | 5.5 |

yoda | yoda | 5.2j, Really Ad Hoc | ad hoc; 9 digits comparison | 1607 | 2.1 |

enlarginghashtables | enlarginghashtables | 5.3a, Prime Numbers | use sieve up to 40 000; prime test numbers greater than 2n; check primality of n itself | 448 | 3.4 |

pallatolur | pallatolur | 5.3a, Prime Numbers | 2 is the only even prime | 118 | 2.1 |

primesieve | primesieve | 5.3a, Prime Numbers | use sieve up to 10^8; it is fast enough | 865 | 4.5 |

reseto | reseto | 5.3a, Prime Numbers | sieve of Eratosthenes until the k-th crossing | 460 | 2.7 |

flowergarden | flowergarden | 5.3b, (Prob) Prime Testing | Euclidean dist; small prime check; use isProbablePrime; simulation; faster solutions exist | 317 | 4.4 |

goldbach2 | goldbach2 | 5.3b, (Prob) Prime Testing | simple brute force problem; use isProbablePrime; faster solutions exist | 1219 | 2.7 |

primes2 | primes2 | 5.3b, (Prob) Prime Testing | convert input to either base 2/8/10/16; skip those that cause NumberFormatException error; use isProbablePrime test and ... | 289 | 4.7 |

pseudoprime | pseudoprime | 5.3b, (Prob) Prime Testing | yes if !isPrime(p) && a.modPow(p, p) = a; Big Integer; also available at UVa 11287 - Pseudoprime Numbers | 347 | 3.5 |

pascal | pascal | 5.3c, Finding Prime Factors | find lowest prime factor of N; special case: N = 1 | 351 | 3.8 |

primalrepresentation | primalrepresentation | 5.3c, Finding Prime Factors | factorization problem; use sieve to avoid TLE; use long long; 2^{31}-1 is a prime |
258 | 5.4 |

primereduction | primereduction | 5.3c, Finding Prime Factors | factorization problem | 465 | 3.9 |

almostperfect | almostperfect | 5.3d, Prime Factors Functions | sumDiv(N)-N; minor variation | 1507 | 3.2 |

divisors | divisors | 5.3d, Prime Factors Functions | return numDiv(nCk); but do not compute nCk directly; work with its prime factors | 208 | 5.2 |

listgame | listgame | 5.3d, Prime Factors Functions | simply return numPF(X) | 1938 | 3.1 |

relatives | relatives | 5.3d, Prime Factors Functions | EulerPhi(N); also available at UVa 10299 - Relatives | 231 | 3.8 |

data | data | 5.3e, Modified Sieve | numDiffPF(V) for V up to N x 1000; Brute force combination/all subsets; DP Subset | 68 | 5.9 |

farey | farey | 5.3e, Modified Sieve | pre-calculate EulerPhi(N); do prefix sum (1D RSQ) of EulerPhi(N) from 1 to each N; the answer is related to this value | 257 | 3.6 |

fareysums | fareysums | 5.3e, Modified Sieve | modified sieve; Euler Phi; a bit of pattern finding involving Euler Phi values | 137 | 4.4 |

nonprimefactors | nonprimefactors | 5.3e, Modified Sieve | numDiv(i) - numDiffPF(i) ∀i in the range; the I/O files are large so Buffered I/O speed is needed | 389 | 5.6 |

dasblinkenlights | dasblinkenlights | 5.3f, GCD and/or LCM | just check if the LCM of p and q ≤ s | 1745 | 1.7 |

diagonalcut | diagonalcut | 5.3f, GCD and/or LCM | find formula involving GCD | 810 | 3.5 |

doodling | doodling | 5.3f, GCD and/or LCM | need to observe pattern; involving LCM/GCD | 30 | 4.9 |

gcd | gcd | 5.3f, GCD and/or LCM | trivial gcd | 510 | 1.7 |

interviewquestion | interviewquestion | 5.3f, GCD and/or LCM | go through the transcript; use gcd to identify a and b | 177 | 2.9 |

jackpot | jackpot | 5.3f, GCD and/or LCM | similar to Kattis - smallestmultiple; use Java BigInteger or other faster solutions | 379 | 3.2 |

locustlocus | locustlocus | 5.3f, GCD and/or LCM | get the smallest y+lcm(c1,c2) of all k pairs | 449 | 2.1 |

prsteni | prsteni | 5.3f, GCD and/or LCM | GCD of first circle radius with subsequent circle radiuses | 993 | 1.6 |

smallestmultiple | smallestmultiple | 5.3f, GCD and/or LCM | simple LCMs of all numbers; use Java BigInteger to be safe | 335 | 3.5 |

eulersnumber | eulersnumber | 5.3g, Factorial | simulate the computation of the approximation (involving factorial) using double data type; the answer will converge; su... | 963 | 1.9 |

howmanydigits | howmanydigits | 5.3g, Factorial | good problem; number of digits in factorial; similar as Kattis - inversefactorial | 1071 | 3.7 |

inversefactorial | inversefactorial | 5.3g, Factorial | good problem; number of digits in factorial | 1059 | 5.3 |

loworderzeros | loworderzeros | 5.3g, Factorial | last non zero digit of factorial; classic | 288 | 4.2 |

namethatpermutation | namethatpermutation | 5.3g, Factorial | permutation number; involving factorial | 154 | 4.8 |

tutorial | tutorial | 5.3g, Factorial | factorial is just part of the problem; pruning | 1249 | 2.8 |

consecutivesums | consecutivesums | 5.3h, Working with PFs | work with factor; sum of Arithmetic Progression series | 239 | 5.2 |

factovisors | factovisors | 5.3h, Working with PFs | factorize m; see if it has support in n!; Legendre's formula; also available at UVa 10139 - Factovisors | 373 | 6.4 |

fundamentalneighbors | fundamentalneighbors | 5.3h, Working with PFs | reverse prime power notation | 237 | 4.5 |

iks | iks | 5.3h, Working with PFs | sieve of Eratosthenes; prime factorize each number; spread the factors around to maximize final GCD/minimize total opera... | 115 | 3.0 |

olderbrother | olderbrother | 5.3h, Working with PFs | just check if q = p^k | 420 | 3.4 |

parket | parket | 5.3h, Working with PFs | just factorize (R+B) | 172 | 2.6 |

perfectpowers | perfectpowers | 5.3h, Working with PFs | GCD of all prime powers; note if x is negative; also available at UVa 10622 - Perfect P-th Power | 590 | 5.3 |

persistent | persistent | 5.3h, Working with PFs | similar to UVa 00993; also available at UVa 10527 - Persistent Numbers | 161 | 3.8 |

rsamistake | rsamistake | 5.3h, Working with PFs | factorize two long-longs; to differentiate no versus partial credit, check for any prime factor with power 2 (or more) | 60 | 3.9 |

zadaca | zadaca | 5.3h, Working with PFs | find lowest frequencies of each prime factors, that is the GCD; output the answer modulo 10^9 | 113 | 3.6 |

anothercandies | anothercandies | 5.3i, Modular Arithmetic | simple modular arithmetic | 1843 | 2.7 |

modulo | modulo | 5.3i, Modular Arithmetic | very simple problem | 5658 | 1.4 |

ones | ones | 5.3i, Modular Arithmetic | no factor of 2 and 5 implies that there is no trailing zero; also available at UVa 10127 - Ones | 567 | 4.6 |

threedigits | threedigits | 5.3i, Modular Arithmetic | simulate factorial computation; remove trailing zeroes; keep many last few non-zero digits using modulo | 289 | 5.9 |

vauvau | vauvau | 5.3i, Modular Arithmetic | modular arithmetic problem | 1265 | 1.8 |

candydistribution | candydistribution | 5.3j, Extended Euclid | the problem boils down to finding C^{-1} (mod K); be careful when the answer is "IMPOSSIBLE" or ≤ K |
199 | 4.9 |

jughard | jughard | 5.3j, Extended Euclid | somewhat Linear Diophantine Equation | 132 | 3.3 |

modulararithmetic | modulararithmetic | 5.3j, Extended Euclid | the division operation requires modular inverse; use Extended Euclidean algorithm | 333 | 2.9 |

soyoulikeyourfoodhot | soyoulikeyourfoodhot | 5.3j, Extended Euclid | Linear Diophantine Equation; still solvable with brute force | 103 | 5.2 |

cocoacoalition | cocoacoalition | 5.3k, Divisibility Test | after observations: the answer is 1 (simple divisibility test), 2 (simple factorization test), or 3 | 355 | 5.2 |

divisible | divisible | 5.3k, Divisibility Test | divisibility; linear pass algorithm | 327 | 4.3 |

jazzitup | jazzitup | 5.3k, Divisibility Test | square free divisibility test | 59 | 2.1 |

magical3 | magical3 | 5.3k, Divisibility Test | divisibility test of n-3; a few corner cases | 348 | 6.1 |

meowfactor | meowfactor | 5.3k, Divisibility Test | divisibility test of 9^ans; small range of ans | 310 | 3.5 |

positivedivisors | positivedivisors | 5.3k, Divisibility Test | just do trial divisions, use deque to add from front and back | 207 | 3.1 |

shortcut | shortcut | 5.3k, Divisibility Test | find the largest divisor of (b-1) ≥ k | 96 | 3.7 |

thinkingofanumber | thinkingofanumber | 5.3k, Divisibility Test | simple range; use min/max properly; then small divisibility tests | 379 | 3.8 |

anti11 | anti11 | 5.4a, Fibonacci Numbers | this problem degenerates into a modified Fibonacci numbers | 518 | 2.7 |

batmanacci | batmanacci | 5.4a, Fibonacci Numbers | Fibonacci; observation on N; Divide and Conquer | 331 | 3.8 |

fibonaccisum | fibonaccisum | 5.4a, Fibonacci Numbers | Zeckendorf's theorem | 125 | 2.3 |

rijeci | rijeci | 5.4a, Fibonacci Numbers | simple simulation with a single loop; Fibonacci | 2478 | 1.5 |

snakesandmasters | snakesandmasters | 5.4a, Fibonacci Numbers | N-th Fibonacci mod 10^6 | 90 | 3.6 |

election | election | 5.4b, Binomial Coefficients | compute the answers with help of binomial coefficients | 213 | 6.2 |

insert | insert | 5.4b, Binomial Coefficients | simulation of BST insertion; then C(l+r, r) for each vertex where l/r are the sizes of the left/right subtree of that ve... | 259 | 2.0 |

lockedtreasure | lockedtreasure | 5.4b, Binomial Coefficients | the answer is ^{n}C_{m-1} |
321 | 2.8 |

oddbinom | oddbinom | 5.4b, Binomial Coefficients | OEIS A006046 | 245 | 3.5 |

perica | perica | 5.4b, Binomial Coefficients | sorting + binomial coefficient; take i-th largest element and use its binomial coefficient to get the number of times it... | 120 | 5.9 |

catalan | catalan | 5.4c, Catalan Numbers | basic Catalan Numbers | 521 | 3.6 |

catalansquare | catalansquare | 5.4c, Catalan Numbers | Catalan Numbers++; follow the description | 507 | 3.5 |

fiat | fiat | 5.4c, Catalan Numbers | N-th Catalan Number; use Fermat's little theorem | 75 | 6.7 |

character | character | 5.4d, Others, Easier | OEIS A000295 | 841 | 2.4 |

honey | honey | 5.4d, Others, Easier | OEIS A002898 | 415 | 2.4 |

integerdivision | integerdivision | 5.4d, Others, Easier | count frequencies of each remainder of [0..d-1]; add C(freq, 2) per such remainder | 242 | 3.3 |

anagramcounting | anagramcounting | 5.4e, Others, Harder | use Big Integer | 1117 | 3.1 |

incognito | incognito | 5.4e, Others, Harder | count frequencies; combinatorics; minus one | 791 | 2.7 |

kitchencombinatorics | kitchencombinatorics | 5.4e, Others, Harder | use fast data structures to help; combinatorics; intermediate result may overflow | 198 | 5.0 |

tritiling | tritiling | 5.4e, Others, Harder | there are two related recurrences here; also available at UVa 10918 - Tri Tiling | 465 | 2.1 |

bobby | bobby | 5.5a, Probability, Easier | computation of expected value | 618 | 2.8 |

deceptivedice | deceptivedice | 5.5a, Probability, Easier | DP probability; expected value | 30 | 3.0 |

dicebetting | dicebetting | 5.5a, Probability, Easier | s: (dice_left, distinct_numbers_so_far); each throw can increase distinct_numbers_so_far or not | 261 | 3.3 |

dicegame | dicegame | 5.5a, Probability, Easier | simple comparison of two expected values | 3410 | 1.5 |

diehard | diehard | 5.5a, Probability, Easier | complete search: try all two dice that John and Hans picks, then simulate all 6x6 = 36 possible pairings, skipping ties | 250 | 2.6 |

expectedearnings | expectedearnings | 5.5a, Probability, Easier | expected value; 2 cases | 68 | 2.3 |

monopol | monopol | 5.5a, Probability, Easier | basic probability with two subtasks | 971 | 1.4 |

odds | odds | 5.5a, Probability, Easier | complete search; simple probability | 142 | 2.5 |

orchard | orchard | 5.5a, Probability, Easier | DP probability; s: (current R, G, B, Y, S_left); t: Raven's move, fruit basket, or one up to four fruits; a bit tedious | 82 | 2.7 |

password | password | 5.5a, Probability, Easier | expected value; the given probabilities already sum to 1.0 | 980 | 2.2 |

secretsanta | secretsanta | 5.5a, Probability, Easier | simple probability; derangement vs factorial; the answer for larger N converges | 321 | 2.7 |

2naire | 2naire | 5.5b, Probability, Harder | probability; expected value | 192 | 2.7 |

anotherdice | anotherdice | 5.5b, Probability, Harder | DP probability; s: (n_left, d_left, mask); try all possible copies of each value; combinatorics | 58 | 4.1 |

anthony | anthony | 5.5b, Probability, Harder | DP probability; need to drop one parameter (N or M) and recover it from the other one | 203 | 5.2 |

bond | bond | 5.5b, Probability, Harder | DP probability; bitmask; just be careful with precision error | 103 | 5.9 |

bribe | bribe | 5.5b, Probability, Harder | DP probability; bitmask, need to drop one parameter (cur_money) and recover it from the bitmask | 53 | 6.3 |

genius | genius | 5.5b, Probability, Harder | generate X sequentially as asked; compute probability of X winning; bottom-up DP; sum the probability of having at least... | 51 | 2.8 |

gnollhypothesis | gnollhypothesis | 5.5b, Probability, Harder | linearity of expectation; try all possible d consecutive non-chosen monsters behind monster i (wrap around); nCk | 135 | 3.3 |

goodcoalition | goodcoalition | 5.5b, Probability, Harder | DP probability; like KNAPSACK | 276 | 3.4 |

lostinthewoods | lostinthewoods | 5.5b, Probability, Harder | simulate random walks of various lengths and distribute the probabilities per iteration; the answer will converge eventu... | 77 | 3.1 |

pegsandlegs | pegsandlegs | 5.5b, Probability, Harder | DAG; DP probabilities/expected value; bottom up DP; topological order is already given | 97 | 3.2 |

pollygone | pollygone | 5.5b, Probability, Harder | DP probability; bottom up; s: (probability); t: what can each opened box do to the probabilities computed so far | 94 | 5.0 |

raffle | raffle | 5.5b, Probability, Harder | the probability of winning a prize if we add x name cards is C(x, 1) * C(n, p-1) / C(n+x, p); this is unimodal; ternary ... | 328 | 4.3 |

cool1 | cool1 | 5.6a, Cycle Finding | the first part is a cycle-finding problem; state is small (8M); be careful of the definition of trail | 142 | 7.1 |

fibonaccicycles | fibonaccicycles | 5.6a, Cycle Finding | detect cycle of fib(n)%k using fast data structure | 118 | 3.2 |

happyprime | happyprime | 5.6a, Cycle Finding | simple cycle-finding; TLE otherwise; small prime check | 1151 | 2.5 |

rats | rats | 5.6a, Cycle Finding | string processing plus cycle-finding; unordered_set | 92 | 6.3 |

alexandbarb | alexandbarb | 5.7a, Game Theory (Basic) | analyze the requirements for winning states; simple solution | 179 | 3.1 |

amultiplicationgame | amultiplicationgame | 5.7a, Game Theory (Basic) | simulate the perfect play; also available at UVa 00847 - A multiplication game | 213 | 4.7 |

bachetsgame | bachetsgame | 5.7a, Game Theory (Basic) | 2 players game; Dynamic Programming; also available at UVa 10404 - Bachet's Game | 724 | 2.1 |

blockgame2 | blockgame2 | 5.7a, Game Theory (Basic) | observe the pattern; 2 winnable cases if N == M and N%M == 0; only 1 move if M < N < 2M; we can always win if N &g... | 314 | 3.2 |

breakingbranches | breakingbranches | 5.7a, Game Theory (Basic) | analyze small test cases to get the solution | 105 | 1.6 |

chocolatedivision | chocolatedivision | 5.7a, Game Theory (Basic) | try on small RxC to find the pattern | 428 | 1.8 |

cuttingbrownies | cuttingbrownies | 5.7a, Game Theory (Basic) | observe the pattern; involves logarithm | 166 | 4.1 |

euclidsgame | euclidsgame | 5.7a, Game Theory (Basic) | minimax; backtracking; also available at UVa 10368 - Euclid's Game | 199 | 4.8 |

ivana | ivana | 5.7a, Game Theory (Basic) | brute force all possible first move (break cycle into a chain); DP; s: (l, r), maximize difference between two consecuti... | 55 | 5.3 |

joylessgame | joylessgame | 5.7a, Game Theory (Basic) | game theory | 384 | 4.3 |

knightpacking | knightpacking | 5.7a, Game Theory (Basic) | basic game theory; trivial pattern | 1676 | 1.3 |

linije | linije | 5.7a, Game Theory (Basic) | game theory; check conditions on how Mirko can win and when Slavko can win; involves MCBM | 39 | 7.9 |

peachpowderpolygon | peachpowderpolygon | 5.7a, Game Theory (Basic) | there is a simple pattern | 121 | 2.1 |

peggamefortwo | peggamefortwo | 5.7a, Game Theory (Basic) | game theory; minimax; 2 alternating players; backtracking/DP on special grid; harder version of Kattis - crackerbarrel | 206 | 3.1 |

checkingforcorrectness | checkingforcorrectness | 5.8a, Matrix Power | Java Big Integer; one subtask uses modPow | 244 | 4.1 |

porpoises | porpoises | 5.8a, Matrix Power | Fibonacci; matrix power; modulo | 268 | 2.9 |

powers | powers | 5.8a, Matrix Power | when a is even, the answer is (a/2)^b, otherwise the answer is 0 | 180 | 5.4 |

squawk | squawk | 5.8a, Matrix Power | count the number of paths of length L in an undirected graph after t steps that are reachable from source s | 409 | 3.5 |

crackingthecode | crackingthecode | 6.2a, Cipher, Harder | one corner case involving the 25th to 26th character determination | 48 | 6.4 |

goodmessages | goodmessages | 6.2a, Cipher, Harder | cipher | 86 | 3.3 |

grille | grille | 6.2a, Cipher, Harder | involving 2D array with rotation | 361 | 3.8 |

itsasecret | itsasecret | 6.2a, Cipher, Harder | playfair cipher; 2D array; quite tedious | 81 | 5.9 |

kleptography | kleptography | 6.2a, Cipher, Harder | cipher | 701 | 1.5 |

monumentmaker | monumentmaker | 6.2a, Cipher, Harder | cipher; need a bit work; trimming tokens | 76 | 4.8 |

overthehill1 | overthehill1 | 6.2a, Cipher, Harder | cipher; a bit of matrix multiplication | 94 | 2.2 |

permutationencryption | permutationencryption | 6.2a, Cipher, Harder | be careful of newline | 1163 | 2.5 |

playfair | playfair | 6.2a, Cipher, Harder | follow the description; a bit tedious; also available at UVa 11697 - Playfair Cipher | 156 | 2.5 |

progressivescramble | progressivescramble | 6.2a, Cipher, Harder | the encode part is trivial; the decode part requires a bit of thinking | 977 | 2.1 |

sacredtexts | sacredtexts | 6.2a, Cipher, Harder | find the value of each rune; understand the concept of Great circle first | 52 | 4.1 |

textencryption | textencryption | 6.2a, Cipher, Harder | convert input alphabets to UPPERCASEs; loop | 305 | 3.2 |

ummcode | ummcode | 6.2a, Cipher, Harder | cipher; just do as asked | 144 | 3.5 |

calculator | calculator | 6.2b, Input Parsing (Rec) | recursive parser and evaluator | 351 | 3.3 |

otpor | otpor | 6.2b, Input Parsing (Rec) | parallel vs series evaluation; write a recursive parser; or use linear pass with stack | 94 | 4.3 |

polish | polish | 6.2b, Input Parsing (Rec) | recursive parser | 224 | 3.3 |

selectgroup | selectgroup | 6.2b, Input Parsing (Rec) | recursive parser; afterwards it is just set operations | 138 | 3.5 |

subexpression | subexpression | 6.2b, Input Parsing (Rec) | recursive parsing; use DP; similar to https://visualgo.net/en/recursion tree versus DAG | 44 | 5.9 |

apaxiaaans | apaxiaaans | 6.2c, Regular Expression | solvable with regex | 6751 | 1.4 |

countthevowels | countthevowels | 6.2c, Regular Expression | one-liner with regular expression | 816 | 1.4 |

hidden | 6.2c, Regular Expression | just a careful 1D array manipulation; we can also use regex | 2.3 | ||

lindenmayorsystem | lindenmayorsystem | 6.2c, Regular Expression | DAT; map char to string; simulation; max answer ≤ 30*5^5; we can also use regex | 302 | 2.5 |

asciifigurerotation | asciifigurerotation | 6.2d, Output Formatting, H | rotate the input 90 degrees clockwise; remove trailing whitespaces; tedious | 521 | 3.5 |

imagedecoding | imagedecoding | 6.2d, Output Formatting, H | simple Run-Length Encoding | 321 | 3.4 |

juryjeopardy | juryjeopardy | 6.2d, Output Formatting, H | tedious problem | 309 | 2.3 |

mathworksheet | mathworksheet | 6.2d, Output Formatting, H | print the width of each token appropriately | 142 | 5.5 |

nizovi | nizovi | 6.2d, Output Formatting, H | formatting with indentation; not that trivial but sample input/output helps | 199 | 3.8 |

pathtracing | pathtracing | 6.2d, Output Formatting, H | just simulate and draw the path; tedious | 675 | 3.1 |

rot | rot | 6.2d, Output Formatting, H | rotate 2D array by 90 degrees (easier) and 45 degrees (more challenging) | 107 | 2.8 |

wordsfornumbers | wordsfornumbers | 6.2d, Output Formatting, H | tedious problem; use mini program to generate [1..99]; also see Kattis - recenice that goes up to [1..999] | 604 | 2.5 |

aaah | aaah | 6.2e, String Comparison | just compare the length of the two strings | 10978 | 1.6 |

detaileddifferences | detaileddifferences | 6.2e, String Comparison | extremely simple string comparison problem | 4320 | 1.4 |

phonelist | phonelist | 6.2e, String Comparison | sort the numbers; see if num i is a prefix of num i+1 | 1955 | 4.3 |

rhyming | rhyming | 6.2e, String Comparison | compare suffix of a common word with the list of other given words | 296 | 2.5 |

smartphone | smartphone | 6.2e, String Comparison | compare prefix so far with the target string and the 3 suggestions; output 1 of 4 options with shortest number of keypre... | 354 | 2.6 |

softpasswords | softpasswords | 6.2e, String Comparison | custom string comparison; follow the requirements | 350 | 2.1 |

zyxab | zyxab | 6.2e, String Comparison | custom string comparison; follow the requirements | 1490 | 2.5 |

apaxianparent | apaxianparent | 6.2f, Really Ad Hoc | really ad hoc; the rules are specific for this problem | 707 | 1.5 |

help2 | help2 | 6.2f, Really Ad Hoc | match placeholder in one pattern with word in the other pattern; two similar placeholders in different patterns are cons... | 170 | 6.6 |

irepeatmyself | irepeatmyself | 6.2f, Really Ad Hoc | string period; complete search | 380 | 2.4 |

kolone | kolone | 6.2f, Really Ad Hoc | simulate the requirement; be careful of corner cases | 316 | 2.6 |

nimionese | nimionese | 6.2f, Really Ad Hoc | adhoc; simulate the requirement | 184 | 2.2 |

orderlyclass | orderlyclass | 6.2f, Really Ad Hoc | some counting problem on string; not heavy combinatoric; linear loop | 128 | 3.9 |

periodicstrings | periodicstrings | 6.2f, Really Ad Hoc | brute force; skip non divisor | 299 | 3.0 |

quickestimate | quickestimate | 6.2f, Really Ad Hoc | just use strlen | 4219 | 1.4 |

raggedright | raggedright | 6.2f, Really Ad Hoc | just simulate the requirement | 1708 | 1.8 |

rotatecut | rotatecut | 6.2f, Really Ad Hoc | simulation; use formula; stop after we have <4 letters | 266 | 3.0 |

textureanalysis | textureanalysis | 6.2f, Really Ad Hoc | one loop | 571 | 2.4 |

tolower | tolower | 6.2f, Really Ad Hoc | trivial string problem | 696 | 1.8 |

zipfslaw | zipfslaw | 6.2f, Really Ad Hoc | sort the words to simplify this problem; also available at UVa 10126 - Zipf's Law | 157 | 5.7 |

inflagrantedelicto | inflagrantedelicto | 6.3a, DP String, Classic | k_p is always 2 (read the problem description); k_r is the LCS of the two permutations plus one; O(n log k) solution | 75 | 4.8 |

ls | ls | 6.3a, DP String, Classic | Edit Distance variant | 176 | 5.2 |

pandachess | pandachess | 6.3a, DP String, Classic | LCS of 2 permutations → LIS; O(n log k) solution; also see UVa 10635 | 267 | 6.0 |

princeandprincess | princeandprincess | 6.3a, DP String, Classic | find LCS of two permutations; also available at UVa 10635 - Prince and Princess | 140 | 6.7 |

signals | signals | 6.3a, DP String, Classic | LCS of 2 permutations → LIS; O(n log k) solution; also see UVa 10635 | 40 | 3.1 |

chemistsvows | chemistsvows | 6.3b, DP String, Non Classic | s: (pos); t: try all elements in periodic table, add 1 or 2 characters | 110 | 3.3 |

cudak | cudak | 6.3b, DP String, Non Classic | s: (prefix, digits_left, sum_left); t: try [0..9]; long long | 61 | 6.4 |

digitsum | digitsum | 6.3b, DP String, Non Classic | the sum of digits have fattern, find it; use a bit of DP to avoid re-computations | 517 | 5.5 |

exam | exam | 6.3b, DP String, Non Classic | s: (pos, correct_left); t: either your friend is wrong or your friend is right, process accordingly; easier solution exi... | 891 | 1.9 |

haiku | haiku | 6.3b, DP String, Non Classic | s: (pos, target); t: try all syllables | 77 | 5.3 |

heritage | heritage | 6.3b, DP String, Non Classic | s: (cur_pos); t: try all N words in dictionary; final answer modulo prime | 348 | 5.2 |

hillnumbers | hillnumbers | 6.3b, DP String, Non Classic | digit DP; s: (prev_digit, pos, is_rising, is_lower); try digit by digit | 84 | 6.7 |

stringfactoring | stringfactoring | 6.3b, DP String, Non Classic | s: the min weight of substring [i..j]; also available at UVa 11022 - String Factoring | 57 | 5.1 |

zapis | zapis | 6.3b, DP String, Non Classic | bracket matching variant; s: (l, r); t: try all possible position; combinatorics | 89 | 5.1 |

avion | avion | 6.4a, String Matching | trivial string matching; just find 'FBI' in the input | 1361 | 1.4 |

deathknight | deathknight | 6.4a, String Matching | trivial string matching; just find 'CD' in the input | 1970 | 1.5 |

fiftyshades | fiftyshades | 6.4a, String Matching | convert input to lower case; search occurrences of word 'pink' or 'rose' | 310 | 1.4 |

geneticsearch | geneticsearch | 6.4a, String Matching | multiple string matchings | 346 | 2.1 |

hangman | hangman | 6.4a, String Matching | find specific character in the given string and replace all occurrences; repeat | 795 | 1.6 |

ostgotska | ostgotska | 6.4a, String Matching | find substring 'ae' and count its frequency | 657 | 1.7 |

powerstrings | powerstrings | 6.4a, String Matching | find s in s+s; similar with UVa 00455; also available at UVa 10298 - Power Strings | 451 | 5.2 |

quiteaproblem | quiteaproblem | 6.4a, String Matching | trivial string matching per line | 1212 | 2.1 |

redrover | redrover | 6.4a, String Matching | brute force each substring; string matching | 429 | 1.9 |

scrollingsign | scrollingsign | 6.4a, String Matching | modified string matching; complete search; also available at UVa 11576 - Scrolling Sign | 238 | 3.1 |

simon | simon | 6.4a, String Matching | trivial string matching/string comparison | 2203 | 2.4 |

simonsays | simonsays | 6.4a, String Matching | trivial string matching/string comparison | 5511 | 1.5 |

boggle | boggle | 6.4b, String Matching, 2D | 2D grid; backtracking | 323 | 3.8 |

hiddenwords | 6.4b, String Matching, 2D | 2D grid; backtracking, a bit of memoization | 6.8 | ||

kinarow | kinarow | 6.4b, String Matching, 2D | brute the top left point of each possible x or o row, then straight-line (horizontal, vertical) or two diagonals 2D stri... | 107 | 4.6 |

knightsearch | knightsearch | 6.4b, String Matching, 2D | 2D grid; backtracking or DP | 425 | 3.2 |

aliens | aliens | 6.5a, Suffix Trie/Tree/Array | Longest Repeated Substring that appears at least m times; Suffix Array; Use Sparse Table data structure to answer RMQs o... | 89 | 6.3 |

automatictrading | automatictrading | 6.5a, Suffix Trie/Tree/Array | Suffix Array; LCP of a range; use Sparse Table | 160 | 5.2 |

baza | baza | 6.5a, Suffix Trie/Tree/Array | Trie; store list of sorted indices that starts with that prefix; counting | 83 | 5.5 |

burrowswheeler | burrowswheeler | 6.5a, Suffix Trie/Tree/Array | duplicate input string; basic Suffix Array construction problem; print the required characters | 96 | 6.2 |

buzzwords | buzzwords | 6.5a, Suffix Trie/Tree/Array | Longest Repeated Substring that appears X times (2 ≤ X < N); also available at UVa 11855 - Buzzwords | 141 | 5.0 |

dvaput | dvaput | 6.5a, Suffix Trie/Tree/Array | easy Longest Repeated Substring problem | 306 | 5.7 |

repeatedsubstrings | repeatedsubstrings | 6.5a, Suffix Trie/Tree/Array | simple LRS application | 119 | 5.8 |

stringmultimatching | stringmultimatching | 6.5a, Suffix Trie/Tree/Array | Suffix Array; multiple calls of String Matching | 185 | 6.8 |

substrings | substrings | 6.5a, Suffix Trie/Tree/Array | Suffix Array; clever usage of LCP information; interesting problem | 194 | 6.5 |

suffixarrayreconstruction | suffixarrayreconstruction | 6.5a, Suffix Trie/Tree/Array | clever creative problem involving Suffix Array concept; be careful that '*' can be more than one character | 125 | 4.1 |

suffixsorting | suffixsorting | 6.5a, Suffix Trie/Tree/Array | basic Suffix Array construction problem; be careful with terminating symbol | 201 | 5.7 |

animal | animal | 6.6a, String Hashing | Singapore15 preliminary; hash the subtrees and compare them | 203 | 6.8 |

hashing | hashing | 6.6a, String Hashing | the problem description is very clear; good rolling hash practice; or use Suffix Array+Sparse Table | 142 | 7.3 |

stringmatching | stringmatching | 6.6a, String Hashing | try Rabin-Karp or KMP | 719 | 4.5 |

typo | typo | 6.6a, String Hashing | rolling hash; update hash value when character s[i] is deleted from string s; use 2 large prime modulo to be safe | 122 | 6.7 |

multigram | multigram | 6.7a, Anagram | brute force lengths that is divisor of the original length of the string; test | 221 | 2.8 |

samedigitseasy | samedigitseasy | 6.7a, Anagram | brute force math; check if x*y is an anagram of digits of x and y | 142 | 2.4 |

antipalindrome | antipalindrome | 6.7b, Palindrome (Checking) | try all substrings and check if any is palindrome | 200 | 1.9 |

kaleidoscopicpalindromes | kaleidoscopicpalindromes | 6.7b, Palindrome (Checking) | test all; when you try enlarging k, the answers are actually 'small' | 233 | 3.2 |

palindromesubstring | palindromesubstring | 6.7b, Palindrome (Checking) | try all pairs of O(n^2) substrings with at least 2 characters; keep the ones that are palindrome (use DP) in a sorted se... | 298 | 4.2 |

peragrams | peragrams | 6.7b, Palindrome (Checking) | only one odd frequency character can be in the center of palindrome once; the rest need to have even frequency | 1692 | 1.7 |

evilstraw | evilstraw | 6.7c, Palindrome (Generating) | greedily match leftmost char s[0]/rightmost char s[n-1] with rightmost/leftmost matching s[i], respectively | 137 | 3.8 |

names | names | 6.7c, Palindrome (Generating) | add a letter or change a letter; complete search | 368 | 4.0 |

browniepoints | browniepoints | 7.2a, Points | points and quadrants; simple; also available at UVa 10865 - Brownie Points | 154 | 2.3 |

cursethedarkness | cursethedarkness | 7.2a, Points | Euclidean dist | 596 | 2.2 |

imperfectgps | imperfectgps | 7.2a, Points | Euclidean dist; simulation | 487 | 4.2 |

jointjogjam | jointjogjam | 7.2a, Points | take the max Euclidean dist between two starting vs two ending points | 448 | 1.6 |

logo | logo | 7.2a, Points | Euclidean dist; also available at UVa 11505 - Logo | 1357 | 2.4 |

mandelbrot | mandelbrot | 7.2a, Points | the modulus operation in complex number is like Euclidean dist; simulate as asked | 616 | 3.0 |

sibice | sibice | 7.2a, Points | Euclidean dist | 7006 | 1.3 |

completingthesquare | completingthesquare | 7.2b, Lines | Euclidean dist checks; then translate a point with a vector | 548 | 1.9 |

countingtriangles | countingtriangles | 7.2b, Lines | actually the constraints simplify this problem to line segment intersection tests | 258 | 2.5 |

goatrope | goatrope | 7.2b, Lines | distance of point to line segments of a rectangle; we can use case analysis (only 8 possibilities) | 854 | 1.6 |

hurricanedanger | hurricanedanger | 7.2b, Lines | distance from point to line (not vector); be careful of precision error; work with integers | 114 | 5.9 |

logo2 | logo2 | 7.2b, Lines | n vectors that sum to 0; given n-1 vectors, find the unknown vector; also available at UVa 11519 - Logo 2 | 114 | 5.6 |

platforme | platforme | 7.2b, Lines | line segment intersection tests; N ≤ 100; complete search | 210 | 2.7 |

rafting | rafting | 7.2b, Lines | distance of points of one polygon to line segments of the other polygon; do this test for both inner to outer and outer ... | 301 | 3.4 |

segmentdistance | segmentdistance | 7.2b, Lines | if the two line segment intersects, output 0.00; otherwise, compute distance of all 4 end points to the other line segme... | 227 | 4.1 |

svm | svm | 7.2b, Lines | vector evaluation | 172 | 4.3 |

triangleornaments | triangleornaments | 7.2b, Lines | the problems can be decomposed into vector projections or to be precise: vector rejections | 204 | 2.1 |

trojke | trojke | 7.2b, Lines | complete search; 3 nested loops; check if three points have the same gradient | 185 | 3.0 |

unlockpattern | unlockpattern | 7.2b, Lines | complete search; Euclidean dist | 902 | 1.7 |

amsterdamdistance | amsterdamdistance | 7.2c, Circles | arcs of circles; no need to model this as an SSSP problem/Dijkstra's | 571 | 2.9 |

anthonyanddiablo | anthonyanddiablo | 7.2c, Circles | area and perimeter of a circle | 937 | 2.3 |

ballbearings | ballbearings | 7.2c, Circles | O(1) adhoc math formula exists | 227 | 3.8 |

biggest | biggest | 7.2c, Circles | find biggest area of sector using simulation; use array (not that larget) to avoid precision error | 147 | 6.6 |

dartscores | dartscores | 7.2c, Circles | simple point in circle test; all integers | 445 | 2.4 |

estimatingtheareaofacircle | estimatingtheareaofacircle | 7.2c, Circles | PI estimation experiment | 2084 | 1.6 |

fractalarea | fractalarea | 7.2c, Circles | area of progressively smaller circles | 224 | 3.1 |

halfacookie | halfacookie | 7.2c, Circles | simple point rotation (without rotation matrix); circle; chord; segment | 626 | 1.7 |

herman | herman | 7.2c, Circles | simple; area of circle; normal vs Manhattan/taxicab | 2124 | 1.5 |

ornaments | ornaments | 7.2c, Circles | arch length plus two times tangent lengths | 236 | 2.2 |

pizza2 | pizza2 | 7.2c, Circles | simple; involving circle; the formula is very easy to derive | 3316 | 1.7 |

racingalphabet | racingalphabet | 7.2c, Circles | circle; arc; simulation | 992 | 1.5 |

sanic | sanic | 7.2c, Circles | rolling a small circle inside a bigger circle; 'offset-by-one' | 115 | 2.4 |

tracksmoothing | tracksmoothing | 7.2c, Circles | actually clever; those round corners will form a circle | 194 | 1.8 |

watchdog | watchdog | 7.2c, Circles | in circle test; brute force | 212 | 2.0 |

alldifferentdirections | alldifferentdirections | 7.2d, Triangles (Trig) | use trigonometry to compute x and y displacement | 446 | 2.6 |

bazen | bazen | 7.2d, Triangles (Trig) | half area of triangle; six possible cases only | 218 | 2.7 |

billiard | billiard | 7.2d, Triangles (Trig) | enlarge the billiard table; then this is solvable with atan2 | 856 | 1.6 |

egypt | egypt | 7.2d, Triangles (Trig) | Pythagorean theorem/triple; also available at UVa 11854 - Egypt | 862 | 1.9 |

glassesfoggymomsspaghetti | glassesfoggymomsspaghetti | 7.2d, Triangles (Trig) | trigonometry; atan; tan | 100 | 2.2 |

humancannonball2 | humancannonball2 | 7.2d, Triangles (Trig) | trigonometry; simple Physics | 2399 | 1.4 |

ladder | ladder | 7.2d, Triangles (Trig) | simple trigonometry problem | 6141 | 1.4 |

mountainbiking | mountainbiking | 7.2d, Triangles (Trig) | up to 4 line segments; simple trigonometry; simple Physics/Kinematic equation | 216 | 2.8 |

santaklas | santaklas | 7.2d, Triangles (Trig) | another simple trigonometry problem: sine | 422 | 2.5 |

vacuumba | vacuumba | 7.2d, Triangles (Trig) | trigonometry to measure the X and Y displacements | 689 | 1.9 |

cropeasy | cropeasy | 7.2e, Triangles + Circles | complete search 3 points/tree; check if the center is integer | 178 | 3.0 |

exoplanetlighthouse | exoplanetlighthouse | 7.2e, Triangles + Circles | decompose the diagram into two right triangles; cosine; arc of a circle; notice km vs m | 36 | 1.7 |

greedypolygons | greedypolygons | 7.2e, Triangles + Circles | the answer is the area of n smaller isosceles triangles + one full circle + a few rectangles | 302 | 1.5 |

queenspatio | queenspatio | 7.2e, Triangles + Circles | compute ring by ring; involving Trigonometry | 71 | 2.9 |

stickysituation | stickysituation | 7.2e, Triangles + Circles | see if 3 sides form a triangle; see UVa 11579 | 675 | 2.7 |

triarea | triarea | 7.2e, Triangles + Circles | simple triangle area | 1326 | 1.3 |

trilemma | trilemma | 7.2e, Triangles + Circles | triangle properties; sort the 3 sides first | 225 | 3.6 |

areal | areal | 7.2f, Quadrilaterals | just output 4*sqrt(a) | 3732 | 1.5 |

armcoordination | armcoordination | 7.2f, Quadrilaterals | pick the easiest one: axis-aligned bounding square of the given circle | 336 | 1.7 |

cetvrta | cetvrta | 7.2f, Quadrilaterals | sort the x and y points, then you will know the 4th point | 4727 | 1.3 |

flowlayout | flowlayout | 7.2f, Quadrilaterals | simulate the process; output the final answers | 965 | 2.0 |

frosting | frosting | 7.2f, Quadrilaterals | area of rectangles; but do it cleverly to avoid TLE | 303 | 3.8 |

grassseed | grassseed | 7.2f, Quadrilaterals | one pass; area of rectangle | 4980 | 1.3 |

hittingtargets | hittingtargets | 7.2f, Quadrilaterals | simple inside rectangle and circle tests | 1026 | 1.7 |

kornislav | kornislav | 7.2f, Quadrilaterals | sort the 4 edges; and think which edges should be taken | 2741 | 1.4 |

officespace | officespace | 7.2f, Quadrilaterals | rectangles; small numbers; 2D Boolean arrays | 143 | 5.5 |

pieceofcake2 | pieceofcake2 | 7.2f, Quadrilaterals | max of 4 rectangle areas; times thickness to get the volume | 2078 | 1.3 |

rectanglearea | rectanglearea | 7.2f, Quadrilaterals | simple rectangle area | 310 | 1.6 |

rectanglesurrounding | rectanglesurrounding | 7.2f, Quadrilaterals | rectangles; small; 2D Boolean arrays | 187 | 3.8 |

roundedbuttons | roundedbuttons | 7.2f, Quadrilaterals | in-rectangle/in-square test; in-4-circles tests | 176 | 2.9 |

squarepeg | squarepeg | 7.2f, Quadrilaterals | there is a simple check if we put the square in the center | 172 | 1.6 |

taisformula | taisformula | 7.2f, Quadrilaterals | area of consecutive trapezoids | 923 | 1.5 |

convexhull | convexhull | 7.3a, Polygon, Easier | basic convex hull problem; be careful with duplicate points and collinear points | 644 | 4.8 |

convexhull2 | convexhull2 | 7.3a, Polygon, Easier | CH; collinear points | 107 | 7.2 |

convexpolygonarea | convexpolygonarea | 7.3a, Polygon, Easier | even more basic problem about area of polygon than Kattis - polygonarea | 703 | 1.9 |

cookiecutter | cookiecutter | 7.3a, Polygon, Easier | polygon area; polygon scaling; polygon translation | 172 | 2.4 |

cuttingcorners | cuttingcorners | 7.3a, Polygon, Easier | simulation of angle checks | 95 | 3.5 |

dartscoring | dartscoring | 7.3a, Polygon, Easier | CH; perimeter of CH | 90 | 4.4 |

jabuke | jabuke | 7.3a, Polygon, Easier | area of triangle; point in triangle; use easier method to see if area of three sub triangles equals to area of the origi... | 614 | 1.9 |

polygonarea | polygonarea | 7.3a, Polygon, Easier | basic polygon area computation; determine CCW/CW order by checking if the signed area is positive/negative, respectively... | 967 | 2.8 |

robotprotection | robotprotection | 7.3a, Polygon, Easier | simply find the area of convex hull | 236 | 2.4 |

simplepolygon | simplepolygon | 7.3a, Polygon, Easier | center of polygon; Graham's scan like angular sorting | 155 | 5.5 |

abstractart | abstractart | 7.3b, Polygon, Harder | cool area union problem; solvable with java.awt.geom.* library package; Shoelace's formula | 66 | 6.0 |

convex | convex | 7.3b, Polygon, Harder | must understand the concept of convex polygon; a bit of mathematical insights: GCD; sort | 132 | 6.4 |

largesttriangle | largesttriangle | 7.3b, Polygon, Harder | CH to remove irrelevant points; O(N^2) rotating caliper-like algorithm | 160 | 6.8 |

playingtheslots | playingtheslots | 7.3b, Polygon, Harder | similar with UVa 01111 | 75 | 3.0 |

pointinpolygon | pointinpolygon | 7.3b, Polygon, Harder | in/out and on polygon | 311 | 5.5 |

roberthood | roberthood | 7.3b, Polygon, Harder | the classic furthest pair problem; use convex hull and then rotating caliper | 376 | 4.6 |

skyline | skyline | 7.3b, Polygon, Harder | cool area subtraction problem from back to front; solvable with java.awt.geom.* library package; Shoelace's formula | 25 | 4.8 |

wrapping | wrapping | 7.3b, Polygon, Harder | rotate; translate; CH; area; also available at UVa 10652 | 223 | 3.6 |

airlinehub | airlinehub | 7.4a, 3D Geometry | gcDistance; also available at UVa 10316 - Airline Hub | 211 | 6.6 |

beavergnaw | beavergnaw | 7.4a, 3D Geometry | volumes of cylinders and cones; inclusion-exclusion; also available at UVa 10297 - Beavergnaw | 1210 | 1.4 |

bottles | bottles | 7.4a, 3D Geometry | LA 6027 - WorldFinals Warsaw12; BSTA+geometric formula; also available at UVa 01280 - Curvy Little Bottles | 217 | 3.0 |

cheese | cheese | 7.4a, 3D Geometry | binary search the answer; geometry formula; a bit of calculus if the cut intersect a sphere | 338 | 3.0 |

flowers | flowers | 7.4a, 3D Geometry | the key part of this problem is integration | 63 | 4.4 |

infiniteslides | infiniteslides | 7.4a, 3D Geometry | 3D Euclidian distance (parameterized by time t); ternary search best t that minimizes 3D distance | 63 | 3.1 |

movingday | movingday | 7.4a, 3D Geometry | output volume of the largest cuboid - V | 261 | 2.1 |

tunnelingtheearth | tunnelingtheearth | 7.4a, 3D Geometry | gcDistance; 3D Euclidean distance; also available at UVa 11817 - Tunnelling The Earth | 55 | 3.2 |

waronweather | waronweather | 7.4a, 3D Geometry | brute force; distance of 3D points; obtuse triangle checks | 100 | 3.5 |

bells | bells | 8.2a, Harder Backtracking | harder backtracking; see pattern; use deque to help with push_front | 210 | 4.7 |

capsules | capsules | 8.2a, Harder Backtracking | recursive backtracking with pruning; SUDOKU variant; may or may not be NP-complete | 84 | 3.2 |

committeeassignment | committeeassignment | 8.2a, Harder Backtracking | backtracking; pruning; add a member to existing committee or create a new committee; TLE with DP bitmask | 68 | 7.4 |

greatswercporto | greatswercporto | 8.2a, Harder Backtracking | use backtracking with pruning; testing up to 10! possible permutations possibly TLE | 120 | 4.1 |

holeynqueensbatman | holeynqueensbatman | 8.2a, Harder Backtracking | similar with UVa 11195 | 527 | 2.2 |

knightsfen | knightsfen | 8.2a, Harder Backtracking | Depth Limited Search (up to 11 moves); also available at UVa 10422 - Knights in FEN | 312 | 3.2 |

minibattleship | minibattleship | 8.2a, Harder Backtracking | try all possible bitmasks of nxn bits that are consistent; try installing ships via backtracking; prune as much as possi... | 140 | 2.9 |

pebblesolitaire | pebblesolitaire | 8.2a, Harder Backtracking | s: (bitmask); simulation; pick the smallest answer | 480 | 2.2 |

sumdoku | sumdoku | 8.2a, Harder Backtracking | tedious backtracking with bitmask; simplify your implementation as much as possible | 52 | 3.3 |

ecoins | ecoins | 8.2b, State-Space, BFS, E | s: (conventional-value, infotechnological-value); BFS; also available at UVa 10306 - e-Coins | 169 | 4.6 |

flipfive | flipfive | 8.2b, State-Space, BFS, E | s: (bitmask); only 2^9 = 512 grid configurations; BFS | 621 | 2.7 |

hydrasheads | hydrasheads | 8.2b, State-Space, BFS, E | s: (cur_H, cur_T); BFS; but easier solution exists | 551 | 1.7 |

illiteracy | illiteracy | 8.2b, State-Space, BFS, E | s: (string); 6 different transition rules; BFS | 126 | 2.9 |

safe | safe | 8.2b, State-Space, BFS, E | s: (convert 3x3 grid into a base 4 integer); BFS | 181 | 3.0 |

buggyrobot | buggyrobot | 8.2c, State-Space, BFS, H | s: (r, c, k); robot at (r, c) executing kth command; t: skip or follow the command (success/fail), or add new DRUL comma... | 84 | 5.2 |

buggyrobot2 | buggyrobot2 | 8.2c, State-Space, BFS, H | see Kattis - buggyrobot | 55 | 6.3 |

distinctivecharacter | distinctivecharacter | 8.2c, State-Space, BFS, H | s: (bitmask); multi-sources BFS; find bitmask that has the furthest distance to any of the source | 272 | 6.5 |

enteringthetime | enteringthetime | 8.2c, State-Space, BFS, H | s: (h1, h2, m1, m2); try adjusting each digit by +1 or -1 | 126 | 5.1 |

jabuke2 | jabuke2 | 8.2c, State-Space, BFS, H | s: (r, c); multiple call of BFS; but gets shorter each time; use 'no-memset' strategy | 40 | 6.6 |

jumpingyoshi | jumpingyoshi | 8.2c, State-Space, BFS, H | s: (u); there are up to 1m vertices but only 1m edges; build edges on the fly using a kind of 'meet in the middle' techn... | 48 | 4.7 |

keyboard | keyboard | 8.2c, State-Space, BFS, H | LA 7155 - WorldFinals Marrakech15; s: (row, col, char_typed); also available at UVa 01714 - Keyboarding | 258 | 5.0 |

ricochetrobots | ricochetrobots | 8.2c, State-Space, BFS, H | s: ((r, c) positions of the 4 robots; each robot can move to any of the 4 directions with variable lengths | 89 | 3.2 |

robotmaze | robotmaze | 8.2c, State-Space, BFS, H | s: (r, c, dir, steps); be careful of corner cases | 87 | 5.7 |

robotturtles | robotturtles | 8.2c, State-Space, BFS, H | s: (r, c, dir, bitmask_ice_castles); print solution; very tedious | 114 | 4.5 |

bigtruck | bigtruck | 8.2d, State-Space, Dijkstra | s: (city, items_picked); use Dijkstra's | 1144 | 3.2 |

bumped | bumped | 8.2d, State-Space, Dijkstra | s: (city, has_use_free_ticket); use Dijkstra's | 545 | 4.4 |

destinationunknown | destinationunknown | 8.2d, State-Space, Dijkstra | use Dijkstra's twice; one normally; one with s: (point, has_edge_g_h_used); compare the results | 101 | 5.6 |

justpassingthrough | justpassingthrough | 8.2d, State-Space, Dijkstra | s: (r, c, n_left); Dijkstra's/SSSP on DAG | 92 | 5.1 |

kitchen | kitchen | 8.2d, State-Space, Dijkstra | s: (volume_of_the_n_cups); t: try all possible pourings; use Dijkstra's | 152 | 3.5 |

quantum | quantum | 8.2d, State-Space, Dijkstra | s: (bitmask); t: all of the nop operations; use Dijkstra's | 82 | 3.3 |

rainbowroadrace | rainbowroadrace | 8.2d, State-Space, Dijkstra | s: (pos, bitmask_of_7_colors); use Dijkstra's | 101 | 2.9 |

treasure | treasure | 8.2d, State-Space, Dijkstra | s: (day, k_left, cur_r, cur_c); use Dijkstra's | 118 | 8.0 |

xentopia | xentopia | 8.2d, State-Space, Dijkstra | s: (u, k1_used, k2_used); use Dijkstra's | 184 | 4.6 |

aspenavenue | aspenavenue | 8.3a, DP level 3 | sort; compute tree positions; s: (l_left, r_left), t: put next tree on the left/right; also available at UVa 11555 - Asp... | 223 | 5.8 |

busticket | busticket | 8.3a, DP level 3 | s: (day_i); t: either buy daily ticket or jump to end of period ticket (use binary search to avoid TLE) | 186 | 4.4 |

crackerbarrel | crackerbarrel | 8.3a, DP level 3 | very similar to Kattis - peggamefortwo but without the 2 alternating players; backtrack/DP on special grid | 55 | 4.0 |

eatingeverything | eatingeverything | 8.3a, DP level 3 | pizza world is a DAG; s: (pizza_stall); t: eat a (full) pizza here and stop; skip this stall; eat a pizza here and take ... | 59 | 3.7 |

exchangerates | exchangerates | 8.3a, DP level 3 | maintain the best CAD and USD each day; also available at UVa 11285 - Exchange Rates | 87 | 4.5 |

homework | homework | 8.3a, DP level 3 | s: (i, j); the currently considered character s is (i+j); t: s matches s1[i] or s2[j] | 172 | 6.7 |

ingestion | ingestion | 8.3a, DP level 3 | s: (hour, consecutive_eating, has_refrain); t: eat at this hour, refrain eating for one or two hours; floating point | 260 | 5.7 |

mailbox | mailbox | 8.3a, DP level 3 | s: (lo, hi, mailbox_left); try all; also available at UVa 00882 - The Mailbox Manufacturers Problem | 386 | 2.1 |

posterize | posterize | 8.3a, DP level 3 | s: (prev_value; k_left); t: pick one of the 256 values to be included in the k selected distinct red values | 411 | 3.0 |

protectingthecollection | protectingthecollection | 8.3a, DP level 3 | s: (r, c, dir, has_installed_a_mirror); t: just proceed or install '/' or '\' mirror at a '.' | 55 | 6.2 |

welcomeeasy | welcomeeasy | 8.3a, DP level 3 | also see Kattis - welcomehard | 655 | 2.1 |

welcomehard | welcomehard | 8.3a, DP level 3 | also see Kattis - welcomeeasy | 345 | 4.8 |

city | city | 8.3b, DP level 4 | s: (i, left_building_explode); t: use 2nd parameter properly | 94 | 6.5 |

coke | coke | 8.3b, DP level 4 | drop parameter n1; recover it from b (number of coke bought), n5, and n10; also available at UVa 10626 - Buying Coke | 304 | 5.6 |

companypicnic | companypicnic | 8.3b, DP level 4 | s: (name, has_been_matched); DP weighted matching (both cardinality and weight) on Tree | 200 | 5.0 |

johnsstack | johnsstack | 8.3b, DP level 4 | memoize sub-problem using map of vector of integers to long long | 96 | 5.9 |

mububa | mububa | 8.3b, DP level 4 | LA 7484 - Singapore15; BSTA; use the correct DP state | 267 | 7.0 |

rollercoasterfun | rollercoasterfun | 8.3b, DP level 4 | s: (T); split DPs when b = 0 and when b != 0 | 101 | 7.7 |

volumeamplification | volumeamplification | 8.3b, DP level 4 | s: (reachable); bottom-up | 50 | 7.5 |

constrainedfreedomofchoice | constrainedfreedomofchoice | 8.3c, Counting Paths, Harder | s: (row, col, last_action); t: go up/right/down based on last_action | 80 | 5.3 |

countcircuits | countcircuits | 8.3c, Counting Paths, Harder | s: (id, cur_x, cur_y); t: skip or use this vector; use offset technique to avoid negative indices | 278 | 5.8 |

favourable | favourable | 8.3c, Counting Paths, Harder | s: (cur_page); t: jump to one of the 3 sections | 304 | 4.5 |

frustratedqueue | frustratedqueue | 8.3c, Counting Paths, Harder | s: (i, n5); recover n10 and n5_at_operator; process accordingly | 68 | 4.4 |

gigcombinatorics | gigcombinatorics | 8.3c, Counting Paths, Harder | s: (i, hype_rating), t: 3 cases, depends on hype_rating; we can do computation on-the-fly with DP bottom up | 595 | 3.9 |

pachinkoprobability | pachinkoprobability | 8.3c, Counting Paths, Harder | s: (pos); DAG modeling; long long | 113 | 5.8 |

ratings | ratings | 8.3c, Counting Paths, Harder | s: (id, sum_left, tie_status); t: try all possible rating scores; the tie_status parameter is important | 165 | 3.6 |

tractor | tractor | 8.3c, Counting Paths, Harder | s: (row, col, move_number), DAG; t: go up/left | 220 | 6.1 |

woodensigns | woodensigns | 8.3c, Counting Paths, Harder | s: (idx, base1, base2), t: point left, right, or both; need to use hash table as memo table | 65 | 2.3 |

hidingchickens | hidingchickens | 8.3d, DP with Bitmask | weighted MCM; small complete weighted graph; make fox goes back to the killing spot first after hiding one or two chicke... | 89 | 5.7 |

narrowartgallery | narrowartgallery | 8.3d, DP with Bitmask | interesting DP; s: (row, state_of_prev_row, k_left) | 1417 | 2.8 |

paths | paths | 8.3d, DP with Bitmask | counting paths on DAG with state s: (u, mask_of_K_colors) | 247 | 3.1 |

pebblesolitaire2 | pebblesolitaire2 | 8.3d, DP with Bitmask | backtracking suffices for Kattis - pebblesolitair; but this version needs extra memoization | 400 | 3.6 |

uxuhulvoting | uxuhulvoting | 8.3d, DP with Bitmask | s: (priest_id, mask_of_3_bits); t: try all 3 possibilities of toggling a bit per priest, keep the best | 240 | 3.2 |

wherehaveyoubin | wherehaveyoubin | 8.3d, DP with Bitmask | s: (i, mask_of_processed) - we have assign bin [0..i-1] and companies mask_of_processed; t: give consecutive bins to eac... | 30 | 5.0 |

councilling | councilling | 8.4a, Network Flow, Standard | matching; max flow; print the assignment; also available at UVa 10511 - Councilling | 89 | 7.1 |

dutyscheduler | dutyscheduler | 8.4a, Network Flow, Standard | try all possible (small range of answers); assignment problem; matching with capacity; max flow | 94 | 3.8 |

jupiter | jupiter | 8.4a, Network Flow, Standard | good modeling problem; a good exercise for those who wants to master max flow modeling | 150 | 5.8 |

maxflow | maxflow | 8.4a, Network Flow, Standard | standard max flow problem for practice; print edges used in the max flow | 531 | 6.3 |

mazemovement | mazemovement | 8.4a, Network Flow, Standard | use gcd for all pairs of vertices to construct the flow graph; then it is just a standard max flow problem | 135 | 4.4 |

mincut | mincut | 8.4a, Network Flow, Standard | standard min cut problem for practice; print vertices reachable from source s after max flow | 293 | 4.1 |

piano | piano | 8.4a, Network Flow, Standard | good modeling problem; afterwards it is just a standard max flow problem | 230 | 4.1 |

tomography | tomography | 8.4a, Network Flow, Standard | max flow; somewhat assignment problem; matching with capacity; bipartite graph: left-set: rows/right-set: col; can also ... | 239 | 3.8 |

waif | waif | 8.4a, Network Flow, Standard | two layers of graph matching; with capacity; use max flow solution | 159 | 2.7 |

water | water | 8.4a, Network Flow, Standard | max flow on undirected flow graph; add edges; rerun max flow K times (short) | 49 | 4.5 |

avoidingtheapocalypse | avoidingtheapocalypse | 8.4b, Network Flow, Variants | interesting max flow modeling; blow the vertices based on time | 191 | 4.4 |

budget | budget | 8.4b, Network Flow, Variants | max flow with lower bound | 66 | 6.8 |

chesscompetition | chesscompetition | 8.4b, Network Flow, Variants | baseball elimination problem; similar to Kattis - unfairplay | 87 | 4.9 |

congest | congest | 8.4b, Network Flow, Variants | LA 6395 - World Finals StPetersburg13; compute SSSP from downtown to other vertices; repeated edge-disjoint path computa... | 256 | 3.7 |

conveyorbelts | conveyorbelts | 8.4b, Network Flow, Variants | max flow; blow up the vertices K times; reroute edges | 89 | 3.7 |

copsandrobbers | copsandrobbers | 8.4b, Network Flow, Variants | min cut; similar to Kattis - thekingofthenorth | 125 | 3.7 |

darkness | darkness | 8.4b, Network Flow, Variants | interesting min cut problem; each light source affects all other cells at x and y units away (the z is always H); cost i... | 28 | 6.5 |

floodingfields | floodingfields | 8.4b, Network Flow, Variants | similar with UVa 11380; must be very careful | 48 | 5.5 |

landscaping | landscaping | 8.4b, Network Flow, Variants | min cut; hard to spot the required modeling | 70 | 6.0 |

marchofpenguins | marchofpenguins | 8.4b, Network Flow, Variants | max flow modeling; vertex capacities; also see UVa 11380; also available at UVa 12125 - March of the Penguins | 68 | 3.8 |

neutralground | neutralground | 8.4b, Network Flow, Variants | min cut; similar to Kattis - thekingofthenorth | 28 | 6.0 |

thekingofthenorth | thekingofthenorth | 8.4b, Network Flow, Variants | interesting min cut problem | 193 | 5.0 |

transportation | transportation | 8.4b, Network Flow, Variants | max flow with vertex capacities | 165 | 5.6 |

unfairplay | unfairplay | 8.4b, Network Flow, Variants | baseball elimination problem; similar to Kattis - chesscompetition; need to print solution too | 89 | 4.7 |

balanceddiet | balanceddiet | 8.6a, NP-hard/C, small, E | PARTITION; n ≤ 20; use DP SUBSET-SUM style | 316 | 4.0 |

countingchocolate | countingchocolate | 8.6a, NP-hard/C, small, E | PARTITION; small instance; DP SUBSET-SUM style | 158 | 4.2 |

equalsumseasy | equalsumseasy | 8.6a, NP-hard/C, small, E | PARTITION; generate all possible subsets with bitmask; use set to record which sums have been computed | 474 | 2.3 |

flowfree | flowfree | 8.6a, NP-hard/C, small, E | brute force combination 3^10 or 4^8; then LONGEST-PATH problem on non DAG between two end points of the same color | 109 | 4.4 |

font | font | 8.6a, NP-hard/C, small, E | count number of possible SET-COVERs; use 2^N backtracking; but use bitmask to represent small set of covered letters | 199 | 4.2 |

satisfiability | satisfiability | 8.6a, NP-hard/C, small, E | SAT(isfiability); n ≤ 20; try all possible subsets | 244 | 3.8 |

socialadvertising | socialadvertising | 8.6a, NP-hard/C, small, E | MIN-DOMINATING-SET/MIN-SET-COVER; n ≤ 20; use compact Adjacency Matrix technique | 59 | 5.1 |

tightfitsudoku | tightfitsudoku | 8.6a, NP-hard/C, small, E | SUDOKU variant; backtracking + pruning | 87 | 4.2 |

vivoparc | vivoparc | 8.6a, NP-hard/C, small, E | GRAPH-COLORING on medium-sized graph; only 4 colors are used in this problem; backtracking | 151 | 5.1 |

beanbag | beanbag | 8.6b, NP-hard/C, small, H | SET-COVER problem; T farmers can collude to give Jack the hardest possible subset of beans to be given freely to Jack | 119 | 4.9 |

busplanning | busplanning | 8.6b, NP-hard/C, small, H | MIN-CLIQUE-COVER; DP bitmask over sets | 91 | 5.4 |

coloring | coloring | 8.6b, NP-hard/C, small, H | GRAPH-COLORING; n ≤ 11; greedily set vertex 0 to have color 0 to reduce max N to 10; backtracking | 313 | 4.8 |

mapcolouring | mapcolouring | 8.6b, NP-hard/C, small, H | GRAPH-COLORING; n ≤ 16; DP over sets; O(3^n); Subset of vertices that are Independent can be 1-colored | 200 | 5.2 |

perfectskyline | perfectskyline | 8.6b, NP-hard/C, small, H | N, S ≤ 15; SUBSET-SUM backtracking with bitmasks | 39 | 4.1 |

programmingteamselection | programmingteamselection | 8.6b, NP-hard/C, small, H | PARTITION-INTO-TRIANGLES; prune if #students % 3 != 0; generate up to m/3 teams; backtracking with memo | 64 | 7.2 |

tugofwar | tugofwar | 8.6b, NP-hard/C, small, H | PARTITION; DP Knapsack with optimization to avoid TLE; also available at UVa 10032 - Tug of War | 117 | 7.4 |

antennaplacement | antennaplacement | 8.6c, NP-hard/C, special, E | MIS: V-MCBM; also available at UVa 10349 - Antenna Placement | 36 | 5.2 |

bilateral | bilateral | 8.6c, NP-hard/C, special, E | MIN-VERTEX-COVER on Bipartite Graph; MCBM; Konig's theorem that can handle the 1009 case correctly | 43 | 6.5 |

bookcircle | bookcircle | 8.6c, NP-hard/C, special, E | left set: boys; right set: girls; add edge (i, j) if boy i reads same book as girl j; MIN-VERTEX-COVER on Bipartite Grap... | 137 | 4.4 |

catvsdog | catvsdog | 8.6c, NP-hard/C, special, E | LA 4288 - NorthwesternEurope08; MIS; also available at UVa 12168 - Cat vs. Dog | 199 | 5.5 |

citrusintern | citrusintern | 8.6c, NP-hard/C, special, E | modified MIN-DOMINATING-SET on tree where two adjacent vertices cannot be both inside the Dominating Set | 169 | 3.6 |

countingclauses | countingclauses | 8.6c, NP-hard/C, special, E | special case of 3-SAT; a bluffing task | 480 | 1.7 |

cross | cross | 8.6c, NP-hard/C, special, E | run special heuristics of the SUDOKU puzzle | 273 | 3.9 |

europeantrip | europeantrip | 8.6c, NP-hard/C, special, E | STEINER-TREE with 3 terminal vertices and up to 1 Steiner point; we can use two ternary searches | 297 | 3.3 |

guardianofdecency | guardianofdecency | 8.6c, NP-hard/C, special, E | LA 3415 - NorthwesternEurope05; MIS; also available at UVa 12083 - Guardian of Decency | 45 | 6.3 |

reactivity | reactivity | 8.6c, NP-hard/C, special, E | verify if a HAMILTONIAN-PATH exists in the DAG; find one topological sort of the DAG; verify if it is the only one in li... | 280 | 4.0 |

airports | airports | 8.6d, NP-hard/C, special, H | MIN-PATH-COVER; on DAG; MCBM | 92 | 6.4 |

eastereggs | eastereggs | 8.6d, NP-hard/C, special, H | BSTA; MAX-INDEPENDENT-SET on Bipartite Graph; V-MCBM | 82 | 5.2 |

ironcoal | ironcoal | 8.6d, NP-hard/C, special, H | STEINER-TREE with 3 terminal vertices and up to 1 Steiner point; SSSP on unweighted graph; BFS; similar to Kattis - jail... | 216 | 5.0 |

itcanbearranged | itcanbearranged | 8.6d, NP-hard/C, special, H | MIN-PATH-COVER; on DAG; weighted; Max Flow | 50 | 5.1 |

jailbreak | jailbreak | 8.6d, NP-hard/C, special, H | STEINER-TREE; grid; BFS from 3 vertices: 'outside' and 2 prisoners (open doors independently or meet a Steiner point fir... | 130 | 4.8 |

joggers | joggers | 8.6d, NP-hard/C, special, H | MIN-VERTEX-COVER on Tree; root tree at vertex 0; limit tree up to depth S/2 | 46 | 6.1 |

mafija | mafija | 8.6d, NP-hard/C, special, H | MAX-INDEPENDENT-SET; Special case: on Pseudoforest; use Greedy MIS; handle unvisited cycle separately | 100 | 3.7 |

ridofcoins | ridofcoins | 8.6d, NP-hard/C, special, H | not the minimizing COIN-CHANGE problem; but the maximizing one; greedy pruning; complete search on much smaller instance | 94 | 7.9 |

taxicab | taxicab | 8.6d, NP-hard/C, special, H | LA 3126 - NorthwesternEurope04; MPC on DAG; also available at UVa 01201 - Taxi Cab Scheme | 38 | 5.5 |

wedding | wedding | 8.6d, NP-hard/C, special, H | can be modeled as a 2-SAT problem; also available at UVa 11294 - Wedding | 36 | 6.7 |

arrivingontime | arrivingontime | 8.7a, BSTA+Other, Easier | BSTA: the latest starting time; use Dijkstra's to compute whether we can still arrive at meeting point on time | 79 | 6.3 |

bigboxes | bigboxes | 8.7a, BSTA+Other, Easier | BSTA+greedy | 135 | 3.5 |

canyoncrossing | canyoncrossing | 8.7a, BSTA+Other, Easier | BSTA (lowest point on the path) + BFS on state-space graph that prioritizes path with lesser number of bridges used firs... | 43 | 5.2 |

charlesincharge | charlesincharge | 8.7a, BSTA+Other, Easier | BSTA: max edge that Charles can use; SSSP from 1 to $N$ passing through edges that do not exceed that; is it OK? | 149 | 4.8 |

expandingrods | expandingrods | 8.7a, BSTA+Other, Easier | bisection method; also available at UVa 10668 - Expanding Rods | 36 | 5.3 |

fencebowling | fencebowling | 8.7a, BSTA+Other, Easier | BSTA (the angle Beta) + trigonometry formulas | 64 | 2.7 |

forestforthetrees | forestforthetrees | 8.7a, BSTA+Other, Easier | gcd; BSTA+geometry in-rectangle tests | 141 | 4.1 |

gridgame | gridgame | 8.7a, BSTA+Other, Easier | BSTA + MCBM | 199 | 5.0 |

pie | pie | 8.7a, BSTA+Other, Easier | BSTA (the volume) + geometry; see if we can divide the pies into F+1 people equally | 171 | 3.0 |

prettygoodcuberoot | prettygoodcuberoot | 8.7a, BSTA+Other, Easier | bisection method; find cube root of a very large integer; use Big Integer | 143 | 5.8 |

programmingtutors | programmingtutors | 8.7a, BSTA+Other, Easier | +perfect MCBM | 161 | 3.7 |

rockclimbing | rockclimbing | 8.7a, BSTA+Other, Easier | BSTA + BFS | 60 | 5.6 |

skijumping | skijumping | 8.7a, BSTA+Other, Easier | BSTA + heavy math/Physics; involving derivation | 56 | 3.4 |

carpet | carpet | 8.7b, BSTA+Other, Harder | binary search the length of the side; use law of cosines to test | 64 | 7.6 |

catandmice | catandmice | 8.7b, BSTA+Other, Harder | BSTA: the initial velocity of Cartesian Cat; DP TSP to verify if the cat can catch all mice in the shortest possible tim... | 141 | 6.8 |

enemyterritory | enemyterritory | 8.7b, BSTA+Other, Harder | MSSP from all enemy vertices; BSTA, run BFS from (xi, yi) to (xr, yr) avoiding vertices that are too close to any enemy | 66 | 4.2 |

gravamen | gravamen | 8.7b, BSTA+Other, Harder | BSTA + max flow | 45 | 6.1 |

low | low | 8.7b, BSTA+Other, Harder | LA 6398 - WorldFinals StPetersburg13; BSTA+greedy; also available at UVa 01577 - Low Power | 451 | 5.1 |

risk | risk | 8.7b, BSTA+Other, Harder | BSTA: smallest edge at the bordering regions; construct flow graph according to valid movement of troops in one turn; ru... | 86 | 6.7 |

wifi | wifi | 8.7b, BSTA+Other, Harder | +greedy; also available at UVa 11516 - WiFi | 214 | 4.3 |

bing | bing | 8.7c, Fast DS+Other, Easier | map all prefixes to frequencies using Hash Table; or use Trie | 1061 | 3.6 |

busnumbers2 | busnumbers2 | 8.7c, Fast DS+Other, Easier | complete search; use unordered_map | 377 | 3.0 |

caveexploration2 | caveexploration2 | 8.7c, Fast DS+Other, Easier | BSTA (water level) + graph connectivity test from (0, 0) to (N-1, N-1) or greedy graph traversal with PQ | 91 | 3.3 |

conquest | conquest | 8.7c, Fast DS+Other, Easier | greedy traversal with help of a Priority Queue; attack adjacent island with smallest army size | 154 | 3.6 |

deildajofnudur | deildajofnudur | 8.7c, Fast DS+Other, Easier | try all possible substrings; see if the frequencies of each character are equal using hash table; keep the longest | 89 | 2.8 |

gcds | gcds | 8.7c, Fast DS+Other, Easier | complete search; use set for speedup | 205 | 4.9 |

loopytransit | loopytransit | 8.7c, Fast DS+Other, Easier | backtracking; use set to store canonical forms, ignoring cyclic shifts | 70 | 3.2 |

musiccollection | musiccollection | 8.7c, Fast DS+Other, Easier | try all substrings in a song; store in unordered_map; get answers; special case when N = 1 | 81 | 3.7 |

quickscope | quickscope | 8.7c, Fast DS+Other, Easier | use stack of sets and hash table of stacks | 1326 | 3.9 |

reducedidnumbers | reducedidnumbers | 8.7c, Fast DS+Other, Easier | brute force the answer with fast unordered_set data structure | 168 | 3.2 |

selfsimilarstrings | selfsimilarstrings | 8.7c, Fast DS+Other, Easier | complete search as the string is short; frequency counting; use unordered_map; repetition | 181 | 3.5 |

simplecronspec | simplecronspec | 8.7c, Fast DS+Other, Easier | a bit of parsing; 4 nested loops to try all simple cron specs/h/m/s; use DAT of seconds to avoid double counting of seco... | 293 | 2.0 |

undetected |