Cod sursa(job #2782237)

Utilizator Claus1911Zabava Claudiu Claus1911 Data 11 octombrie 2021 22:52:30
Problema Rj Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 2.1 kb
import sys
import re

director=sys.argv[1] if len(sys.argv)>1 else "rj.in"
director2=sys.argv[2] if len(sys.argv)>1 else "rj.out"
a=[]

with open(director, "r") as f:
    mc = f.readline().rstrip('\n')
    mc = re.split('\W+', mc)
    n = int(mc[0])
    mm=int(mc[1])
    m=n
    while m:
        l=[]
        mc = f.readline().rstrip('\n')
        for i in mc:
            if i=='X':
                l.append(-1)
            elif i==' ':
                l.append(0)
            elif i=='R':
                rx=n-m+1
                ry=len(l)+1
                l.append(0)
            elif i=='J':
                jx=n-m+1
                jy=len(l)+1
                l.append(0)
        a.append(l)
        m-=1


dx = [-1,1,1,-1,0,1,0,-1]
dy = [-1,-1,1,1,-1,0,1,0]
x=[]
y=[]
mi=99999
a[rx-1][ry-1]=1
x.append(rx)
y.append(ry)
fin=list()
finn=list()
def bf_lee(p,u):
    global mi,fin, finn
    if p<=u and p<=n and u<=mm:
        i=x[p-1]
        j=y[p-1]
        #ok=0
        for k in range(8):
            ii=i+dx[k]
            jj=j+dy[k]
            if ii > 0 and ii <= n and jj > 0 and jj <= mm and a[ii-1][jj-1] == 0:
                #ok=1
                u+=1
                x.append(ii)
                y.append(jj)
                tt=ii,jj
                fin.append(tt)
                a[ii-1][jj-1]=a[i-1][j-1]+1
                if ii == jx and jj == jy:
                    if a[ii-1][jj-1] > 0 and a[ii-1][jj-1] < mi:
                        mi=a[ii-1][jj-1]
                        finn=fin.copy()
                        return 0
                else:
                    bf_lee(p+1,u)
                    fin.pop()

        p+=1
    else:
        return 0




bf_lee(1,1)
tt=rx,ry
finn.insert(0,tt)
with open(director2, "w") as g:
    if len(finn)%2 !=0:
        k1 = (len(finn) // 2) + 1
        k2 = finn[k1-1][0]
        k3 = finn[k1-1][1]
        g.write(str(k1) + " " + str(k2) + " " + str(k3))
    else:
        k1 = (len(finn) // 2)
        k2 = finn[k1][0]
        k3 = finn[k1][1]
        g.write(str(k1) + " " + str(k2) + " " + str(k3))