Problem p03458 (python)

Fixed submission:
n, k = map(int, input().split())
imos = [[0 for i in range(k)] for j in range(k)]
white = 0
for i in range(n):
    x, y, c = input().split()
    x = int(x)
    y = int(y)
    if c == "W":
        c = 1
    else:
        c = 0
    x %= 2*k
    y %= 2*k

    if x > k-1:
        x -= k
        c += 1
    if y > k-1:
        y -=k
        c += 1
    c %= 2

    if c == 1:
        white += 1
        imos[x][y] -= 1
    else:
        imos[x][y] += 1

for i in range(k):
    for j in range(k-1):
        imos[i][j+1] += imos[i][j]

for j in range(k):
    for i in range(k-1):
        imos[i+1][j] += imos[i][j]

ans = 0
for i in range(k):
    for j in range(k):
        exp = imos[k-1][k-1] - imos[k-1][j] - imos[i][k-1] + 2 * imos[i][j] + white
        ans = max(ans, max(exp, n - exp))

print(ans)

Buggy submission (verdict: Runtime Error):
n,k=map(int,input().split())
l=[input().split() for _ in range(n)]
b=[[0]*k for _ in range(k)]
w=[[0]*k for _ in range(k)]
anb=[[0]*k for _ in range(k)]
anw=[[0]*k for _ in range(k)]
ans=0
i=0
while i<n:
    m=(((int(l[i][0]))//k)+((int(l[i][1]))//k))%2
    if (m==0 and str(l[i][2])=="W"):
        w[l[i][0]][l[i][1]] +=1    
    elif (m==1 and str(l[i][2])=="B"):
        b[l[i][0]][l[i][1]] +=1   
    elif:(m==1 and str(l[i][2])=="W"):
        anw[l[i][0]][l[i][1]] +=1 
    else:
        anb[l[i][0]][l[i][1]] +=1 
      

for a in range(0,k):
     for b in range(0,k):
         total=sum([w[a:k][b:k])+sum(anw[0:a][0:b])+sum([b[a:k][b:k])+sum(anb[0:a][0:b])
         ans=max(ans,total,n-total)
print(ans)

Buggy submission (verdict: Runtime Error):
    n,k=map(int,input().split())
    l=[input().split() for _ in range(n)]
    w=[[0]*(k+1) for _ in range(k+1)]
    b=[[0]*(k+1) for _ in range(k+1)]
    for i in range(n):
        if ((int(l[i][0])//k+int(l[i][1])//k)%2==0)^(l[i][2]=='W'):
            b[int(l[i][0])%k][int(l[i][1])%k]+=1
        else:
            w[int(l[i][0])%k][int(l[i][1])%k]+=1
     
    for i in range(1,k+1):
        b[0][i]+=b[0][i-1]
        b[i][0]+=b[i-1][0]
        w[0][i]+=w[0][i-1]
        w[i][0]+=w[i-1][0]
    for i in range(1,k+1):
        for j in range(1,k+1):
            b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1]
            w[i][j]+=w[i-1][j]+w[i][j-1]-w[i-1][j-1]
     
    ans=0
    for i in range(k+1):
        for j in range(k+1):
            ans=max(ans,b[k][k]-b[i][k]-b[k][j]+2*b[i][j]+w[i][k]+w[k][j]-2*w[i][j])
            ans=max(ans,w[k][k]-w[i][k]-w[k][j]+2*w[i][j]+b[i][k]+b[k][j]-2*b[i][j])
    print(ans)

n,k=map(int,input().split())
l=[input().split() for _ in range(n)]
w=[[0]*(k+1) for _ in range(k+1)]
b=[[0]*(k+1) for _ in range(k+1)]
for i in range(n):
    if ((int(l[i][0])//k+int(l[i][1])//k)%2==0)^(l[i][2]=='W'):
        b[int(l[i][0])%k][int(l[i][1])%k]+=1
    else:
        w[int(l[i][0])%k][int(l[i][1])%k]+=1

for i in range(1,k+1):
    b[0][i]+=b[0][i-1]
    b[i][0]+=b[i-1][0]
    w[0][i]+=w[0][i-1]
    w[i][0]+=w[i-1][0]
for i in range(1,k+1):
    for j in range(1,k+1):
        b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1]
        w[i][j]+=w[i-1][j]+w[i][j-1]-w[i-1][j-1]

ans=0
for i in range(k+1):
    for j in range(k+1):
        ans=max(ans,b[k][k]-b[i][k]-b[k][j]+2*b[i][j]+w[i][k]+w[k][j]-2*w[i][j])
        ans=max(ans,w[k][k]-w[i][k]-w[k][j]+2*w[i][j]+b[i][k]+b[k][j]-2*b[i][j])
print(ans)

Buggy submission (verdict: Runtime Error):
    n,k=map(int,input().split())
    l=[input().split() for _ in range(n)]
    w=[[0]*(k+1) for _ in range(k+1)]
    b=[[0]*(k+1) for _ in range(k+1)]
    for i in range(n):
        if ((int(l[i][0])//k+int(l[i][1])//k)%2==0)^(l[i][2]=='W'):
            b[int(l[i][0])%k][int(l[i][1])%k]+=1
        else:
            w[int(l[i][0])%k][int(l[i][1])%k]+=1
     
    for i in range(1,k+1):
        b[0][i]+=b[0][i-1]
        b[i][0]+=b[i-1][0]
        w[0][i]+=w[0][i-1]
        w[i][0]+=w[i-1][0]
    for i in range(1,k+1):
        for j in range(1,k+1):
            b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1]
            w[i][j]+=w[i-1][j]+w[i][j-1]-w[i-1][j-1]
     
    ans=0
    for i in range(k+1):
        for j in range(k+1):
            ans=max(ans,b[k][k]-b[i][k]-b[k][j]+2*b[i][j]+w[i][k]+w[k][j]-2*w[i][j])
            ans=max(ans,w[k][k]-w[i][k]-w[k][j]+2*w[i][j]+b[i][k]+b[k][j]-2*b[i][j])
    print(ans)

n,k=map(int,input().split())
l=[input().split() for _ in range(n)]
w=[[0]*(k+1) for _ in range(k+1)]
b=[[0]*(k+1) for _ in range(k+1)]
for i in range(n):
    if ((int(l[i][0])//k+int(l[i][1])//k)%2==0)^(l[i][2]=='W'):
        b[int(l[i][0])%k][int(l[i][1])%k]+=1
    else:
        w[int(l[i][0])%k][int(l[i][1])%k]+=1

for i in range(1,k+1):
    b[0][i]+=b[0][i-1]
    b[i][0]+=b[i-1][0]
    w[0][i]+=w[0][i-1]
    w[i][0]+=w[i-1][0]
for i in range(1,k+1):
    for j in range(1,k+1):
        b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1]
        w[i][j]+=w[i-1][j]+w[i][j-1]-w[i-1][j-1]

ans=0
for i in range(k+1):
    for j in range(k+1):
        ans=max(ans,b[k][k]-b[i][k]-b[k][j]+2*b[i][j]+w[i][k]+w[k][j]-2*w[i][j])
        ans=max(ans,w[k][k]-w[i][k]-w[k][j]+2*w[i][j]+b[i][k]+b[k][j]-2*b[i][j])
print(ans)

Submission
問題 	D - Checker
ユーザ名 	lpo
投稿日時 	2019/10/11 18:33:24
言語 	PyPy3 (2.4.0)
状態    n,k=map(int,input().split())
    l=[input().split() for _ in range(n)]
    w=[[0]*(k+1) for _ in range(k+1)]
    b=[[0]*(k+1) for _ in range(k+1)]
    for i in range(n):
        if ((int(l[i][0])//k+int(l[i][1])//k)%2==0)^(l[i][2]=='W'):
            b[int(l[i][0])%k][int(l[i][1])%k]+=1
        else:
            w[int(l[i][0])%k][int(l[i][1])%k]+=1
     
    for i in range(1,k+1):
        b[0][i]+=b[0][i-1]
        b[i][0]+=b[i-1][0]
        w[0][i]+=w[0][i-1]
        w[i][0]+=w[i-1][0]
    for i in range(1,k+1):
        for j in range(1,k+1):
            b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1]
            w[i][j]+=w[i-1][j]+w[i][j-1]-w[i-1][j-1]
     
    ans=0
    for i in range(k+1):
        for j in range(k+1):
            ans=max(ans,b[k][k]-b[i][k]-b[k][j]+2*b[i][j]+w[i][k]+w[k][j]-2*w[i][j])
            ans=max(ans,w[k][k]-w[i][k]-w[k][j]+2*w[i][j]+b[i][k]+b[k][j]-2*b[i][j])
    print(ans)

n,k=map(int,input().split())
l=[input().split() for _ in range(n)]
w=[[0]*(k+1) for _ in range(k+1)]
b=[[0]*(k+1) for _ in range(k+1)]
for i in range(n):
    if ((int(l[i][0])//k+int(l[i][1])//k)%2==0)^(l[i][2]=='W'):
        b[int(l[i][0])%k][int(l[i][1])%k]+=1
    else:
        w[int(l[i][0])%k][int(l[i][1])%k]+=1

for i in range(1,k+1):
    b[0][i]+=b[0][i-1]
    b[i][0]+=b[i-1][0]
    w[0][i]+=w[0][i-1]
    w[i][0]+=w[i-1][0]
for i in range(1,k+1):
    for j in range(1,k+1):
        b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1]
        w[i][j]+=w[i-1][j]+w[i][j-1]-w[i-1][j-1]

ans=0
for i in range(k+1):
    for j in range(k+1):
        ans=max(ans,b[k][k]-b[i][k]-b[k][j]+2*b[i][j]+w[i][k]+w[k][j]-2*w[i][j])
        ans=max(ans,w[k][k]-w[i][k]-w[k][j]+2*w[i][j]+b[i][k]+b[k][j]-2*b[i][j])
print(ans)

Buggy submission (verdict: Runtime Error):

    l.append(input().split())
ans=0
for a in range(0,k):
     for b in range(0,k):
         i=0
         total=0
         while i<n:
           m=((int(l[i][0])-a)//k)%2
           h=((int(l[i][1])-b)//k)%2
           if ((m+h)%2==0 and str(l[i][2])=="W") or ((m+h)%2==1 and str(l[i][2])=="B"):
               total=total+1
               i=i+1
           else:
               i=i+1

         else:
              ans=max(ans,total,n-total)
print(ans)

Buggy submission (verdict: Runtime Error):
n,k=map(int,input().split())
l=[]
for j in range(0,4):
    l.append(input().split())
ans=0
for a in range(0,k):
     for b in range(0,k):
         i=0
         total=0
         while i<n:
           m=(abs(int(l[i][0])-a)//k)%2
           h=(abs(int(l[i][1])-b)//k)%2
           if ((m+h)%2==0 and str(l[i][2])=="W") or ((m+h)%2==1 and str(l[i][2])=="B"):
               total=total+1
               i=i+1
           else:
               i=i+1

         else:
              ans=max(ans,total,n-total)
print(ans)

Buggy submission (verdict: Runtime Error):
n,k=map(int,input().split())

from numpy import arrer



def s(a,b):
   i=0
   total=0
   while i<n:
      x1,y1,z=map(str,input().split())
      x,y=map(int,[x1,y1])
      l=(abs(x+y-a-b)//k)%2
      if (l==0 and z="W") or (l==1 and z="b"):
          total=total+1
          i=i+1

      else:
          i=i+1

   else:
       return s=max(total,n-total)

 print(max(s(a,b)) if (a for xrange(k)) and (if b for xrange(k)))