TomaKapec's blog

By TomaKapec, history, 12 months ago, In English

So I found fast I/O for Python and I used it before and it worked and now it doesn't. I don't know why, I tried everything! I use it for this task https://codeforces.com/contest/1850/problem/G, and here is my code. If anyone can explain why that would be great. (To clarify the code may be optimal, or maybe not but the question isn't about the task itself but rather about fast input)

import io, os
#so this here should work but doesn't
input = io.BytesIO(os.read(0,os.fstat(0).st_size)).readline
t = int(input())

def solve(n, points):
    d_plus, d_minus, red, stupac = {}, {}, {}, {}
    r=0
    
    for i in points:
        x, y = i
        a, b, c, d = red.get(x, 0), stupac.get(y, 0), d_plus.get(x+y, 0), d_minus.get(x-y, 0) 
        r+=(a+b+c+d)*2; red[x], stupac[y], d_plus[x+y], d_minus[x-y] = a+1, b+1, c+1, d+1;

    return r

for i in range(t):
    n = int(input())
    points = [list(map(int, (input().decode()).split())) for i in range(n)]
    print(solve(n, points))
  • Vote: I like it
  • 0
  • Vote: I do not like it

»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

It is getting TL with both python and Pypy, I recon os stdin,stdout are the fastest

  • »
    »
    12 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    No, it doesn't matter if it gets TLE or not, but when i use fast input it says compilation error!

»
12 months ago, # |
  Vote: I like it +10 Vote: I do not like it

Dictionary in python is also very common issue.

»
12 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by TomaKapec (previous revision, new revision, compare).

»
5 months ago, # |
  Vote: I like it 0 Vote: I do not like it

jebiga kapec valjda si rijesio ovo