ZOJ Problem Set - 3220
Defense of the Ancients (DotA) is a custom scenario for Warcraft III. The objective of the scenario is to destroy the opponents' "Ancient". The two teams' ancients are heavily guarded structures at opposing corners of the map. Players use powerful units known as heroes, and are assisted by allied heroes and AI-controlled fighters called "creeps". As in role-playing games, players level up their hero and use gold to buy equipment during the mission.
Defense of the Ancients pits two teams of players against each other: the Sentinel and the Scourge. Players on the Sentinel team are based at the southwest corner of the map, and those on the Scourge team are based at the northeast corner. Each base is defended by towers and waves of units which guard the main paths leading to their base. In the center of each base is the "Ancient", a building that must be destroyed to win the game.
Each human player controls one Hero, a powerful unit with unique abilities. In Allstars, players on each side choose one of ninety-three heroes, each with different abilities and tactical advantages over other heroes. The scenario is highly team-oriented; it is difficult for one player to carry the team to victory alone. Nevertheless, some heroes, given enough time, can change the outcome single-handedly, while countering the opposing team's heroes. Defense of the Ancients allows up to ten players in a five versus five format and an additional two slots for referees or observers, often with an equal number of players on each side.
In order to win the game, killing is necessary. A killing Streak results when a single Hero accumulates multiple enemy hero kills without dying. The streak restarts upon the Hero's death to the enemy team, texts will show for every streak:
Besides, there are some more interesting things, like "First Blood", "Double Kill!" and "Triple Kill!".
This results when one side executes the first hero kill in the game. The player who drew First Blood gains an extra 200 gold, and the text "(name of player) just drew First Blood!" is shown.
A Double Kill results when two enemy heroes are killed by a single player in a short period of time. Triple Kill is the same, only when 3 or more enemy heroes are killed. Kills must be performed within 14 seconds after the last kill to trigger the text. It does not matter if you are killed during the time. When 4 or more heroes are killed, Triple Kill will just be repeated. The text is "(name of player) just got a Double Kill!" or "(name of player) just got a Triple Kill!". And you should notice, if one killing leads to two killing streak, the text of the "Double Kill! / Triple Kill!" always shows later.
Now, if you have all the information about the killings, could you restore the texts which have been shown.
InputThe first line of the input is a single number T indicates the number of cases, there are at most 100 test cases. In each case, the killing information is like this:
minute:second (name of player1) kills (name of player2)
minute indicates the minutes the game had been player for, and second indicates the seconds. The name of player will less than 20 letters and there will be at most one kill in a single second. Each case will end with a line containing a single '#'. There will be less than 100 killings in a case.
OutputRestore the texts which have been shown. Output a blank line after each case.
2 1:30 A kills B 1:40 A kills C 1:50 A kills D 2:00 A kills E # 10:00 vigoss kills tom 10:29 vigoss kills mike 10:14 vigoss kills peter #
A just drew First Blood! A just got a Double Kill! A has a Killing Spree! A just got a Triple Kill! A is Dominating! A just got a Triple Kill! vigoss just drew First Blood! vigoss just got a Double Kill! vigoss has a Killing Spree!
Author: YANG, Kete
Source: ZOJ Monthly, June 2009