Участник:Berkut.kiu/A lot of cars

Материал из DISCOPAL
Перейти к: навигация, поиск

задача https://www.codechef.com/problems/CARLOT посылка https://www.codechef.com/viewsolution/45691181

точно такой же код на C++ проходит тайм лимит в последнем тесте, python довольно медленный в этом плане

import numpy as np
 
T = int(input())
for test in range(T):
    M, N = map(int, input().split())
    a = np.zeros((M, N), dtype = str)
    ans, summ, save, cnt = 0, 0, 0, 0
    for i in range(1, M + 1):
        parkings = input().split()
        cnt += parkings.count('P')
        a[i - 1] = parkings
    for i in range(1, M + 1):
        flag = 0
        if ans != 0 and cnt != 0:
            summ += 1
        if cnt == 0:
            break
        begin, end, it = 0, 0, 0
        for j in range(1, N + 1):
            if a[i - 1][j - 1] == 'P' and flag == 0:
                begin = j
                flag = 1
            if a[i - 1][j - 1] == 'P':
                end = j
                cnt -= 1
        if flag != 0:
            ans = 1
            if i % 2 == 0:
                it = end
            else:
                it = begin
            if summ == 0:
                summ = abs(end - begin)
            else:
                summ = summ + abs(save - it) + abs(end - begin)
            if (i % 2 != 0):
                save = end
            else:
                save = begin
    print(summ)