imashutosh51

Rotten oranges for test

Mar 30th, 2026
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.89 KB | None | 0 0
  1. from typing import List
  2. import copy
  3. from collections import deque
  4.  
  5. def min_minutes_to_spoil(grid: List[List[int]]) -> int:
  6.     """
  7.    Calculate the minimum number of minutes until no fresh items remain.
  8.    Return -1 if it's impossible for all items to spoil.
  9.    
  10.    0: Empty cell
  11.    1: Fresh item
  12.    2: Spoiled item
  13.    """
  14.     # TODO: Implement your logic here
  15.     rows=len(grid)
  16.     cols=len(grid[0])
  17.    
  18.     queue=deque()
  19.     fresh=0
  20.    
  21.     for r in range(rows):
  22.         for c in range(cols):
  23.             if grid[r][c]==2:
  24.                 queue.append((r,c))
  25.             elif grid[r][c]==1:
  26.                 fresh+=1
  27.     if fresh==0:
  28.         return 0
  29.     minutes=0
  30.     directions=[(1,0),(-1,0),(0,1),(0,-1)]
  31.     while queue:
  32.         size=len(queue)
  33.         changed=False
  34.        
  35.         for _ in range(size):
  36.             r,c=queue.popleft()
  37.            
  38.             for dr, dc in directions:
  39.                 nr=r+dr
  40.                 nc=c+dc
  41.                
  42.                 if 0<=nr<rows and 0<=nc<cols:
  43.                     if grid[nr][nc]==1:
  44.                         grid[nr][nc]=2
  45.                         fresh-=1
  46.                         queue.append((nr,nc))
  47.                         changed=True
  48.         if changed:
  49.             minutes+=1
  50.     return minutes if fresh==0 else -1
  51.                
  52.  
  53. if __name__ == "__main__":
  54.     test_cases = [
  55.         # (grid, expected_output)
  56.         ([[2, 1, 1], [1, 1, 0], [0, 1, 1]], 4),
  57.         ([[2, 1, 1], [0, 1, 1], [1, 0, 1]], -1),
  58.         ([[0, 2]], 0)
  59.     ]
  60.    
  61.     print("--- Running Tests ---")
  62.     for i, (grid, expected) in enumerate(test_cases, 1):
  63.         grid_copy = copy.deepcopy(grid)
  64.         result = min_minutes_to_spoil(grid_copy)
  65.        
  66.         if result == expected:
  67.             print(f"Test {i}: PASS")
  68.         else:
  69.             print(f"Test {i}: FAIL (Expected {expected}, Got {result})")
Advertisement
Add Comment
Please, Sign In to add comment