CSES - Datatähti 2025 alku - Results
Submission details
Task:Robotti
Sender:eeronaali
Submission time:2024-11-04 23:56:13 +0200
Language:Python3 (PyPy3)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.04 s1, 2details
#20.04 s1, 2details
#30.04 s1, 2details
#40.04 s1, 2details
#50.04 s1, 2details
#60.04 s1, 2details
#70.04 s1, 2details
#80.04 s1, 2details
#90.04 s1, 2details
#100.04 s1, 2details
#110.04 s1, 2details
#120.04 s2details
#130.04 s2details
#140.04 s2details
#150.04 s2details
#160.04 s2details
#170.04 s2details
#180.04 s2details
#190.04 s2details
#200.04 s2details
#210.04 s2details
#220.05 s2details
#230.04 s2details
#240.04 s2details

Code

# Syöte
#rooms = int(input())
#building = [x for x in input()]

rooms = 20
building = list(x for x in "**.*......*.R*...*..")

#print (" ".join(building))

# Kolikkojen lukumäärä
all_coins = building.count("*")

# Laskurit
steps = 0
coins_collected = 0

# Robotin aloitussijainti
robot_position = building.index("R")


# OHJELMA
while True:
    #print ("\n")
    
    #1. etsitään lähin kolikko
    positions = [rooms, rooms]
    
    for i in range(robot_position, 0, -1):
        #print (i + 1, building[i])
        if building[i] == "*":
            positions[0] = i
            break
    
    for j in range(robot_position, rooms):
        if building[j] == "*":
            positions[1] = j
            break
            
    #print ("kolikkojen sijainnit", positions[0], positions[1])
    
    coin_paths = [positions[0] - robot_position, positions[1] - robot_position]
    
    if abs(coin_paths[0]) < abs(coin_paths[1]):
        shortest_path = coin_paths[0]
    else:
        shortest_path = coin_paths[1]
    
    #shortest_path = min(abs(robot_position - positions[0]), abs(robot_position - positions[1])) - robot_position
    #print (min(abs(robot_position - positions[0]), abs(robot_position - positions[1])))
    #print (shortest_path)
    
    #2. jos kolikot yhtä lähellä tai kaikki kolikot on kerätty --> break
    if (abs(robot_position - positions[0]) == abs(robot_position - positions[1])) or (coins_collected == all_coins):
        break
    
    #3. liikutaan ja kerätään kolikko
    #print (robot_position, positions, coin_paths, shortest_path, building)
    
    robot_position += shortest_path
    building[robot_position] = "."
    steps += abs(shortest_path)
    coins_collected += 1
    


# Tulostus
print (steps, coins_collected)

Test details

Test 1

Group: 1, 2

Verdict:

input
1
R

correct output
0 0

user output
4 2

Test 2

Group: 1, 2

Verdict:

input
10
...R......

correct output
0 0

user output
4 2

Test 3

Group: 1, 2

Verdict:

input
10
**.R...***

correct output
12 5

user output
4 2

Test 4

Group: 1, 2

Verdict:

input
10
***R******

correct output
0 0

user output
4 2

Test 5

Group: 1, 2

Verdict:

input
1000
R................................

correct output
947 9

user output
4 2

Test 6

Group: 1, 2

Verdict:

input
1000
.................................

correct output
886 9

user output
4 2

Test 7

Group: 1, 2

Verdict:

input
1000
.....*..*....**..**..*......*....

correct output
1287 400

user output
4 2

Test 8

Group: 1, 2

Verdict:

input
1000
************.*****************...

correct output
0 0

user output
4 2

Test 9

Group: 1, 2

Verdict:

input
1000
******************************...

correct output
0 0

user output
4 2

Test 10

Group: 1, 2

Verdict:

input
1000
R*****************************...

correct output
999 999

user output
4 2

Test 11

Group: 1, 2

Verdict:

input
1000
******************************...

correct output
999 999

user output
4 2

Test 12

Group: 2

Verdict:

input
10000
.......**........*...........*...

correct output
10971 999

user output
4 2

Test 13

Group: 2

Verdict:

input
10000
*..*....*......*.....*..*........

correct output
9999 999

user output
4 2

Test 14

Group: 2

Verdict:

input
10000
*.*.*...**.*...*....**.**.**.....

correct output
18766 5000

user output
4 2

Test 15

Group: 2

Verdict:

input
10000
R*****************************...

correct output
9999 9999

user output
4 2

Test 16

Group: 2

Verdict:

input
10000
******************************...

correct output
9999 9999

user output
4 2

Test 17

Group: 2

Verdict:

input
200000
.................................

correct output
0 0

user output
4 2

Test 18

Group: 2

Verdict:

input
200000
.................................

correct output
299934 10000

user output
4 2

Test 19

Group: 2

Verdict:

input
200000
**.***....**..**.....***.*..*....

correct output
299998 100000

user output
4 2

Test 20

Group: 2

Verdict:

input
200000
******************************...

correct output
0 0

user output
4 2

Test 21

Group: 2

Verdict:

input
200000
R................................

correct output
133765 3

user output
4 2

Test 22

Group: 2

Verdict:

input
200000
R................................

correct output
199982 5000

user output
4 2

Test 23

Group: 2

Verdict:

input
200000
R*****************************...

correct output
199999 199999

user output
4 2

Test 24

Group: 2

Verdict:

input
200000
******************************...

correct output
199999 199999

user output
4 2