Memory limit: 256 MB. Time limit: 1 s.
Een multiset is een verzameling van elementen vergelijkbaar met set, waarin elementen meerdere keren kunnen voorkomen. Het volgende voorbeeld is een multiset:
{0, 0, 1, 2, 2, 5, 5, 5, 8}
- Gegeven een multiset S bestaande uit niet-negatieve integers en een niet-negatieve integer n die nog geen onderdeel is van S, is het jouw doel om n in S in te voegen door de volgende 3 bewerkingen herhaaldelijk uit te voeren:
1. Kies een (mogelijke lege) subset T van S. T is een set unieke getallen die voorkomen in S.
2. Wis alle elementen van T uit S. (Verwijder slechts een enkele kopie van elk element).
3. Voeg mex(T) toe aan S. Hierin is mex(T) de kleinste niet-negatieve integer die niet voorkomt in T. De term mex staat voor “minimum excluded” waarde.
Jouw doel is om het minimum aantal bewerkingen te vinden die nodig zijn om n toe te voegen aan S.
Aangezien de grootte van S groot kan zijn, wordt deze gerepresenteerd als een lijst (f0, …, fn − 1) van grootte n, waarbij fi staat voor het aantal keren dat het cijfer i voorkomt in S. (Denk eraan dat n de integer is die we willen toevoegen aan S).
Invoer
De eerste regel bevat een integer t (1 ≤ t ≤ 200) — het aantal testcases. Elke twee volgende regels beschrijven een testcase:
- De eerste regel van elke testcase bevat een integer n (1 ≤ n ≤ 50), de integer die toegevoegd moet worden aan S
- De tweede regel van elke testcase bevat n integers f0, f1, …, fn − 1 (0 ≤ fi ≤ 1016), de set S.
Uitvoer
Voor elke testcase, print één regel met het minimum aantal bewerkingen dat nodig is om te voldoen aan de conditie.
Puntentelling
Subtask #1 (5 punten): n ≤ 2
Subtask #2 (17 punten): n ≤ 20
Subtask #3 (7 punten): fi = 0
Subtask #4 (9 punten): fi ≤ 1
Subtask #5 (20 punten): fi ≤ 2000
Subtask #6 (9 punten): f0 ≤ 1016 en fj = 0 (for all j ≠ 0)
Subtask #7 (10 punten): er is een waarde i waarvoor fi ≤ 1016 en fj = 0 (for all j ≠ i)
Subtask #8 (23 punten): geen extra randvoorwaarden.
Voorbeelden
In het eerste voorbeeld, is S = {1, 1, 1, 3, 3, 3} bij invoer en is ons doel om 4 toe te voegen aan S.
Hiervoor kunnen we de volgende bewerkingen uitvoeren:
1. kies T = {} dan wordt S: {0, 1, 1, 1, 3, 3, 3}
2. kies T = {0, 1, 3} dan wordt S: {1, 1, 2, 3, 3}
3. kies T = {1} dan wordt S: {0, 1, 2, 3, 3}
4. kies T = {0, 1, 2, 3} dan wordt: S {3, 4}