Cod sursa(job #2782221)

Utilizator Claus1911Zabava Claudiu Claus1911 Data 11 octombrie 2021 22:16:21
Problema Rj Scor 0
Compilator py Status done
Runda Arhiva de probleme Marime 2.01 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()
def bf_lee():
    global mi,sx,sy,fin
    p=u=1
    while p<=u:
        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]
                        return 0
        if ok==0:
            tt=i,j
            if tt in fin:
                fin.remove(tt)
        p+=1




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