#!/usr/bin/env python
cashiers = ( 2 , 7 , 3 , 5 , 2 ) # capabilities
def solve( data) :
customer = [ 0 ] * len ( cashiers)
processable = [ 9 *len ( data) ] * len ( cashiers)
for d in data:
cashier = customer.index ( min ( customer) )
if d in '123456789' :
customer[ cashier] += int ( d)
elif d == 'x' :
processable[ cashier] = min ( customer[ cashier] , processable[ cashier] )
customer[ cashier] += 1
elif d == '.' :
for cashier, capability in enumerate ( cashiers) :
customer[ cashier] -= min ( customer[ cashier] , processable[ cashier] , capability)
processable[ cashier] -= min ( processable[ cashier] , capability)
return ',' .join ( map ( str , customer) )
def test ( data, correct) :
answer = solve( data)
print 'xo' [ answer== correct] , data, correct, answer
0 , test ( "42873x.3." , "0,4,2,0,0" ) ;
1 , test ( "1" , "1,0,0,0,0" ) ;
2 , test ( "." , "0,0,0,0,0" ) ;
3 , test ( "x" , "1,0,0,0,0" ) ;
4 , test ( "31." , "1,0,0,0,0" ) ;
5 , test ( "3x." , "1,1,0,0,0" ) ;
6 , test ( "99569x" , "9,9,6,6,9" ) ;
7 , test ( "99569x33" , "9,9,9,9,9" ) ;
8 , test ( "99569x33." , "7,2,6,4,7" ) ;
9 , test ( "99569x33.." , "5,0,4,0,5" ) ;
10 , test ( "12345x3333." , "4,0,3,2,3" ) ;
11 , test ( "54321x3333." , "3,0,3,0,4" ) ;
12 , test ( "51423x3333." , "3,4,4,0,4" ) ;
13 , test ( "12x34x." , "1,0,1,0,2" ) ;
14 , test ( "987x654x.32" , "7,6,4,10,5" ) ;
15 , test ( "99999999999x99999999.......9." , "20,10,12,5,20" ) ;
16 , test ( "997" , "9,9,7,0,0" ) ;
17 , test ( ".3.9" , "1,9,0,0,0" ) ;
18 , test ( "832.6" , "6,6,0,0,0" ) ;
19 , test ( ".5.568" , "3,5,6,8,0" ) ;
20 , test ( "475..48" , "4,8,0,0,0" ) ;
21 , test ( "7.2..469" , "1,4,6,9,0" ) ;
22 , test ( "574x315.3" , "3,3,1,7,1" ) ;
23 , test ( "5.2893.x98" , "10,9,5,4,1" ) ;
24 , test ( "279.6xxx..4" , "2,1,4,1,1" ) ;
25 , test ( "1.1.39..93.x" , "7,1,0,0,0" ) ;
26 , test ( "7677749325927" , "16,12,17,18,12" ) ;
27 , test ( "x6235.87.56.9." , "7,2,0,0,0" ) ;
28 , test ( "4.1168.6.197.6." , "0,0,3,0,0" ) ;
29 , test ( "2.8.547.25..19.6" , "6,2,0,0,0" ) ;
30 , test ( ".5.3x82x32.1829.." , "5,0,5,0,7" ) ;
31 , test ( "x.1816..36.24.429." , "1,0,0,0,7" ) ;
32 , test ( "79.2.6.81x..26x31.1" , "1,0,2,1,1" ) ;
33 , test ( "574296x6538984..5974" , "14,13,10,15,14" ) ;
34 , test ( "99.6244.4376636..72.6" , "5,6,0,0,3" ) ;
35 , test ( "1659.486x5637168278123" , "17,16,16,18,17" ) ;
36 , test ( ".5.17797.x626x5x9457.3." , "14,0,3,5,8" ) ;
37 , test ( "..58624.85623..4.7..23.x" , "1,1,0,0,0" ) ;
38 , test ( "716.463.9.x.8..4.15.738x4" , "7,3,5,8,1" ) ;
39 , test ( "22xx.191.96469472.7232377." , "10,11,18,12,9" ) ;
40 , test ( "24..4...343......4.41.6...2" , "2,0,0,0,0" ) ;
41 , test ( "32732.474x153.866..4x29.2573" , "7,5,7,8,5" ) ;
42 , test ( "786.1267x9937.17.15448.1x33.4" , "4,4,8,4,10" ) ;
43 , test ( "671714849.149.686852.178.895x3" , "13,16,13,10,12" ) ;
44 , test ( "86x.47.517..29621.61x937..xx935" , "7,11,8,8,10" ) ;
45 , test ( ".2233.78x.94.x59511.5.86x3.x714." , "4,6,10,8,8" ) ;
46 , test ( ".793...218.687x415x13.1...x58576x" , "8,11,8,6,9" ) ;
47 , test ( "6.6x37.3x51x932.72x4x33.9363.x7761" , "15,13,15,12,15" ) ;
48 , test ( "6..4.x187..681.2x.2.713276.669x.252" , "6,7,8,6,5" ) ;
49 , test ( ".6.xx64..5146x897231.x.21265392x9775" , "19,17,19,20,17" ) ;
50 , test ( "334.85413.263314.x.6293921x3.6357647x" , "14,14,12,16,10" ) ;
51 , test ( "4.1..9..513.266..5999769852.2.38x79.x7" , "12,10,13,6,10" ) ;
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCgpjYXNoaWVycyA9ICgyLDcsMyw1LDIpICAgICMgY2FwYWJpbGl0aWVzCgpkZWYgc29sdmUoZGF0YSk6CiAgICBjdXN0b21lciA9IFswXSAqIGxlbihjYXNoaWVycykKICAgIHByb2Nlc3NhYmxlID0gWzkqbGVuKGRhdGEpXSAqIGxlbihjYXNoaWVycykKICAgIGZvciBkIGluIGRhdGE6CiAgICAgICAgY2FzaGllciA9IGN1c3RvbWVyLmluZGV4KG1pbihjdXN0b21lcikpCiAgICAgICAgaWYgZCBpbiAnMTIzNDU2Nzg5JzoKICAgICAgICAgICAgY3VzdG9tZXJbY2FzaGllcl0gKz0gaW50KGQpCiAgICAgICAgZWxpZiBkID09ICd4JzoKICAgICAgICAgICAgcHJvY2Vzc2FibGVbY2FzaGllcl0gPSBtaW4oY3VzdG9tZXJbY2FzaGllcl0sIHByb2Nlc3NhYmxlW2Nhc2hpZXJdKQogICAgICAgICAgICBjdXN0b21lcltjYXNoaWVyXSArPSAxCiAgICAgICAgZWxpZiBkID09ICcuJzoKICAgICAgICAgICAgZm9yIGNhc2hpZXIsY2FwYWJpbGl0eSBpbiBlbnVtZXJhdGUoY2FzaGllcnMpOgogICAgICAgICAgICAgICAgY3VzdG9tZXJbY2FzaGllcl0gLT0gbWluKGN1c3RvbWVyW2Nhc2hpZXJdLCBwcm9jZXNzYWJsZVtjYXNoaWVyXSwgY2FwYWJpbGl0eSkKICAgICAgICAgICAgICAgIHByb2Nlc3NhYmxlW2Nhc2hpZXJdIC09IG1pbihwcm9jZXNzYWJsZVtjYXNoaWVyXSwgY2FwYWJpbGl0eSkKICAgIHJldHVybiAnLCcuam9pbihtYXAoc3RyLCBjdXN0b21lcikpCgpkZWYgdGVzdChkYXRhLCBjb3JyZWN0KToKICAgIGFuc3dlciA9IHNvbHZlKGRhdGEpCiAgICBwcmludCAneG8nW2Fuc3dlcj09Y29ycmVjdF0sIGRhdGEsIGNvcnJlY3QsIGFuc3dlcgoKMCwgdGVzdCggIjQyODczeC4zLiIsICIwLDQsMiwwLDAiICk7CjEsIHRlc3QoICIxIiwgIjEsMCwwLDAsMCIgKTsKMiwgdGVzdCggIi4iLCAiMCwwLDAsMCwwIiApOwozLCB0ZXN0KCAieCIsICIxLDAsMCwwLDAiICk7CjQsIHRlc3QoICIzMS4iLCAiMSwwLDAsMCwwIiApOwo1LCB0ZXN0KCAiM3guIiwgIjEsMSwwLDAsMCIgKTsKNiwgdGVzdCggIjk5NTY5eCIsICI5LDksNiw2LDkiICk7CjcsIHRlc3QoICI5OTU2OXgzMyIsICI5LDksOSw5LDkiICk7CjgsIHRlc3QoICI5OTU2OXgzMy4iLCAiNywyLDYsNCw3IiApOwo5LCB0ZXN0KCAiOTk1Njl4MzMuLiIsICI1LDAsNCwwLDUiICk7CjEwLCB0ZXN0KCAiMTIzNDV4MzMzMy4iLCAiNCwwLDMsMiwzIiApOwoxMSwgdGVzdCggIjU0MzIxeDMzMzMuIiwgIjMsMCwzLDAsNCIgKTsKMTIsIHRlc3QoICI1MTQyM3gzMzMzLiIsICIzLDQsNCwwLDQiICk7CjEzLCB0ZXN0KCAiMTJ4MzR4LiIsICIxLDAsMSwwLDIiICk7CjE0LCB0ZXN0KCAiOTg3eDY1NHguMzIiLCAiNyw2LDQsMTAsNSIgKTsKMTUsIHRlc3QoICI5OTk5OTk5OTk5OXg5OTk5OTk5OS4uLi4uLi45LiIsICIyMCwxMCwxMiw1LDIwIiApOwoxNiwgdGVzdCggIjk5NyIsICI5LDksNywwLDAiICk7CjE3LCB0ZXN0KCAiLjMuOSIsICIxLDksMCwwLDAiICk7CjE4LCB0ZXN0KCAiODMyLjYiLCAiNiw2LDAsMCwwIiApOwoxOSwgdGVzdCggIi41LjU2OCIsICIzLDUsNiw4LDAiICk7CjIwLCB0ZXN0KCAiNDc1Li40OCIsICI0LDgsMCwwLDAiICk7CjIxLCB0ZXN0KCAiNy4yLi40NjkiLCAiMSw0LDYsOSwwIiApOwoyMiwgdGVzdCggIjU3NHgzMTUuMyIsICIzLDMsMSw3LDEiICk7CjIzLCB0ZXN0KCAiNS4yODkzLng5OCIsICIxMCw5LDUsNCwxIiApOwoyNCwgdGVzdCggIjI3OS42eHh4Li40IiwgIjIsMSw0LDEsMSIgKTsKMjUsIHRlc3QoICIxLjEuMzkuLjkzLngiLCAiNywxLDAsMCwwIiApOwoyNiwgdGVzdCggIjc2Nzc3NDkzMjU5MjciLCAiMTYsMTIsMTcsMTgsMTIiICk7CjI3LCB0ZXN0KCAieDYyMzUuODcuNTYuOS4iLCAiNywyLDAsMCwwIiApOwoyOCwgdGVzdCggIjQuMTE2OC42LjE5Ny42LiIsICIwLDAsMywwLDAiICk7CjI5LCB0ZXN0KCAiMi44LjU0Ny4yNS4uMTkuNiIsICI2LDIsMCwwLDAiICk7CjMwLCB0ZXN0KCAiLjUuM3g4MngzMi4xODI5Li4iLCAiNSwwLDUsMCw3IiApOwozMSwgdGVzdCggInguMTgxNi4uMzYuMjQuNDI5LiIsICIxLDAsMCwwLDciICk7CjMyLCB0ZXN0KCAiNzkuMi42LjgxeC4uMjZ4MzEuMSIsICIxLDAsMiwxLDEiICk7CjMzLCB0ZXN0KCAiNTc0Mjk2eDY1Mzg5ODQuLjU5NzQiLCAiMTQsMTMsMTAsMTUsMTQiICk7CjM0LCB0ZXN0KCAiOTkuNjI0NC40Mzc2NjM2Li43Mi42IiwgIjUsNiwwLDAsMyIgKTsKMzUsIHRlc3QoICIxNjU5LjQ4Nng1NjM3MTY4Mjc4MTIzIiwgIjE3LDE2LDE2LDE4LDE3IiApOwozNiwgdGVzdCggIi41LjE3Nzk3Lng2MjZ4NXg5NDU3LjMuIiwgIjE0LDAsMyw1LDgiICk7CjM3LCB0ZXN0KCAiLi41ODYyNC44NTYyMy4uNC43Li4yMy54IiwgIjEsMSwwLDAsMCIgKTsKMzgsIHRlc3QoICI3MTYuNDYzLjkueC44Li40LjE1LjczOHg0IiwgIjcsMyw1LDgsMSIgKTsKMzksIHRlc3QoICIyMnh4LjE5MS45NjQ2OTQ3Mi43MjMyMzc3LiIsICIxMCwxMSwxOCwxMiw5IiApOwo0MCwgdGVzdCggIjI0Li40Li4uMzQzLi4uLi4uNC40MS42Li4uMiIsICIyLDAsMCwwLDAiICk7CjQxLCB0ZXN0KCAiMzI3MzIuNDc0eDE1My44NjYuLjR4MjkuMjU3MyIsICI3LDUsNyw4LDUiICk7CjQyLCB0ZXN0KCAiNzg2LjEyNjd4OTkzNy4xNy4xNTQ0OC4xeDMzLjQiLCAiNCw0LDgsNCwxMCIgKTsKNDMsIHRlc3QoICI2NzE3MTQ4NDkuMTQ5LjY4Njg1Mi4xNzguODk1eDMiLCAiMTMsMTYsMTMsMTAsMTIiICk7CjQ0LCB0ZXN0KCAiODZ4LjQ3LjUxNy4uMjk2MjEuNjF4OTM3Li54eDkzNSIsICI3LDExLDgsOCwxMCIgKTsKNDUsIHRlc3QoICIuMjIzMy43OHguOTQueDU5NTExLjUuODZ4My54NzE0LiIsICI0LDYsMTAsOCw4IiApOwo0NiwgdGVzdCggIi43OTMuLi4yMTguNjg3eDQxNXgxMy4xLi4ueDU4NTc2eCIsICI4LDExLDgsNiw5IiApOwo0NywgdGVzdCggIjYuNngzNy4zeDUxeDkzMi43Mng0eDMzLjkzNjMueDc3NjEiLCAiMTUsMTMsMTUsMTIsMTUiICk7CjQ4LCB0ZXN0KCAiNi4uNC54MTg3Li42ODEuMnguMi43MTMyNzYuNjY5eC4yNTIiLCAiNiw3LDgsNiw1IiApOwo0OSwgdGVzdCggIi42Lnh4NjQuLjUxNDZ4ODk3MjMxLnguMjEyNjUzOTJ4OTc3NSIsICIxOSwxNywxOSwyMCwxNyIgKTsKNTAsIHRlc3QoICIzMzQuODU0MTMuMjYzMzE0LnguNjI5MzkyMXgzLjYzNTc2NDd4IiwgIjE0LDE0LDEyLDE2LDEwIiApOwo1MSwgdGVzdCggIjQuMS4uOS4uNTEzLjI2Ni4uNTk5OTc2OTg1Mi4yLjM4eDc5Lng3IiwgIjEyLDEwLDEzLDYsMTAiICk7
stdout
o 42873x.3. 0,4,2,0,0 0,4,2,0,0
o 1 1,0,0,0,0 1,0,0,0,0
o . 0,0,0,0,0 0,0,0,0,0
o x 1,0,0,0,0 1,0,0,0,0
o 31. 1,0,0,0,0 1,0,0,0,0
o 3x. 1,1,0,0,0 1,1,0,0,0
o 99569x 9,9,6,6,9 9,9,6,6,9
o 99569x33 9,9,9,9,9 9,9,9,9,9
o 99569x33. 7,2,6,4,7 7,2,6,4,7
o 99569x33.. 5,0,4,0,5 5,0,4,0,5
o 12345x3333. 4,0,3,2,3 4,0,3,2,3
o 54321x3333. 3,0,3,0,4 3,0,3,0,4
o 51423x3333. 3,4,4,0,4 3,4,4,0,4
o 12x34x. 1,0,1,0,2 1,0,1,0,2
o 987x654x.32 7,6,4,10,5 7,6,4,10,5
o 99999999999x99999999.......9. 20,10,12,5,20 20,10,12,5,20
o 997 9,9,7,0,0 9,9,7,0,0
o .3.9 1,9,0,0,0 1,9,0,0,0
o 832.6 6,6,0,0,0 6,6,0,0,0
o .5.568 3,5,6,8,0 3,5,6,8,0
o 475..48 4,8,0,0,0 4,8,0,0,0
o 7.2..469 1,4,6,9,0 1,4,6,9,0
o 574x315.3 3,3,1,7,1 3,3,1,7,1
o 5.2893.x98 10,9,5,4,1 10,9,5,4,1
o 279.6xxx..4 2,1,4,1,1 2,1,4,1,1
o 1.1.39..93.x 7,1,0,0,0 7,1,0,0,0
o 7677749325927 16,12,17,18,12 16,12,17,18,12
o x6235.87.56.9. 7,2,0,0,0 7,2,0,0,0
o 4.1168.6.197.6. 0,0,3,0,0 0,0,3,0,0
o 2.8.547.25..19.6 6,2,0,0,0 6,2,0,0,0
o .5.3x82x32.1829.. 5,0,5,0,7 5,0,5,0,7
o x.1816..36.24.429. 1,0,0,0,7 1,0,0,0,7
o 79.2.6.81x..26x31.1 1,0,2,1,1 1,0,2,1,1
o 574296x6538984..5974 14,13,10,15,14 14,13,10,15,14
o 99.6244.4376636..72.6 5,6,0,0,3 5,6,0,0,3
o 1659.486x5637168278123 17,16,16,18,17 17,16,16,18,17
o .5.17797.x626x5x9457.3. 14,0,3,5,8 14,0,3,5,8
o ..58624.85623..4.7..23.x 1,1,0,0,0 1,1,0,0,0
o 716.463.9.x.8..4.15.738x4 7,3,5,8,1 7,3,5,8,1
o 22xx.191.96469472.7232377. 10,11,18,12,9 10,11,18,12,9
o 24..4...343......4.41.6...2 2,0,0,0,0 2,0,0,0,0
o 32732.474x153.866..4x29.2573 7,5,7,8,5 7,5,7,8,5
o 786.1267x9937.17.15448.1x33.4 4,4,8,4,10 4,4,8,4,10
o 671714849.149.686852.178.895x3 13,16,13,10,12 13,16,13,10,12
o 86x.47.517..29621.61x937..xx935 7,11,8,8,10 7,11,8,8,10
o .2233.78x.94.x59511.5.86x3.x714. 4,6,10,8,8 4,6,10,8,8
o .793...218.687x415x13.1...x58576x 8,11,8,6,9 8,11,8,6,9
o 6.6x37.3x51x932.72x4x33.9363.x7761 15,13,15,12,15 15,13,15,12,15
o 6..4.x187..681.2x.2.713276.669x.252 6,7,8,6,5 6,7,8,6,5
o .6.xx64..5146x897231.x.21265392x9775 19,17,19,20,17 19,17,19,20,17
o 334.85413.263314.x.6293921x3.6357647x 14,14,12,16,10 14,14,12,16,10
o 4.1..9..513.266..5999769852.2.38x79.x7 12,10,13,6,10 12,10,13,6,10