1979E - Manhattan Triangle - CodeForces Solution


binary search constructive algorithms data structures geometry implementation two pointers *2400

Please click on ads to support us..

Python Code:

def solve():
  n, d = map(int, input().split())
  X = [0 for _ in range(n)]
  Y = [0 for _ in range(n)]
  
  for i in range(n):
    x, y = map(int, input().split())
    X[i], Y[i] = x - y, x + y
    
  for _ in range(2):
    hach = {}
    for i in range(n):
      if X[i] not in hach:
        hach[X[i]] = {}
      hach[X[i]][Y[i]] = i
    
    for i in range(n):
      x = X[i]
      y = Y[i]
      if y + d in hach.get(x, {}):
        edge = hach[x][y + d]
        for point in [x - d, x + d]:
          if point in hach:
            for key in sorted(hach[point]):
              if y <= key <= y + d:
                print(i + 1, edge + 1, hach[point][key] + 1)
                return 0
    X, Y = Y, X
      
  print("0 0 0")
 
for _ in range(int(input())):
  solve()
    


Comments

Submit
0 Comments
More Questions

1114A - Got Any Grapes
224B - Array
125B - Simple XML
567B - Berland National Library
431B - Shower Line
282C - XOR and OR
1582B - Luntik and Subsequences
609A - Флеш-карты
1207A - There Are Two Types Of Burgers
371C - Hamburgers
343B - Alternating Current
758B - Blown Garland
1681B - Card Trick
1592A - Gamer Hemose
493D - Vasya and Chess
1485A - Add and Divide
337B - Routine Problem
1392D - Omkar and Bed Wars
76E - Points
762C - Two strings
802M - April Fools' Problem (easy)
577B - Modulo Sum
1555B - Two Tables
1686A - Everything Everywhere All But One
1469B - Red and Blue
1257B - Magic Stick
18C - Stripe
1203B - Equal Rectangles
1536A - Omkar and Bad Story
1509A - Average Height