input: Write a python function to solve task scheduling problem and return the sequence of non-overlapping tasks. 
  assert solve_scheduling([{"start":3, "end":7}, {"start":1, "end":2}, {"start":6, "end":10}, {"start":8, "end":11}, {"start":12, "end":15}]) == [{"start": 1, "end": 2}, {"start": 3, "end": 7}, {"start": 8, "end": 11}, {"start": 12, "end": 15}]
  assert solve_scheduling([{"start":0, "end":1}, {"start":3, "end":5}, {"start":4, "end":6}, {"start":6, "end":7}, {"start":5, "end":9}, {"start":8, "end":9}]) == [{"start": 0, "end": 1}, {"start": 3, "end": 5}, {"start": 6, "end": 7}, {"start": 8, "end": 9}]
  assert solve_scheduling([{"start":1, "end":4}, {"start":3, "end":5}, {"start":0, "end":6}, {"start":5, "end":7}, {"start":3, "end":9}, {"start":5, "end":9}, {"start":6, "end":10}, {"start":8, "end":11}, {"start":8, "end":12}, {"start":2, "end":14}, {"start":12, "end":16}]) == [{"start": 1, "end": 4}, {"start": 5, "end": 7}, {"start": 8, "end": 11}, {"start": 12, "end": 16}]
output: def solve_scheduling(tasks):
      tasks.sort(key=lambda x: x['end'])
      result = []
      last_end_time = -1
  
      for task in tasks:
          if task['start'] >= last_end_time:
              result.append(task)
              last_end_time = task['end']
  
      return result