Pastehsjsjs

Untitled

Apr 18th, 2023
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.90 KB | Source Code | 0 0
  1. '''
  2. Задание 26 (№2480).
  3. На сайте министерства транспорта организовали приём жалоб автомобилистов на плохое качество дорог. К моменту, когда министерство выделило средства на ремонт одной из автомагистралей, на сайте накопилось уже некоторое количество жалоб. Каждая жалоба описывает начало и конец проблемного участка (примерное расстояние от начала автомагистрали в метрах). Так как жалобы писались независимо друг от друга разными людьми, некоторые описываемые участки автомагистрали накладываются друг на друга. Для планирования необходимых ремонтных ресурсов министерство решило узнать, сколько заявлено непрерывных участков дороги и какова их общая длина.
  4. Входные данные
  5. В первой строке входного файла находится число N - количество жалоб (натуральное число, не превышающее 10 000). В следующих N строках находится по два числа. Первое число - расстояние от начала автомагистрали до начала проблемного участка в метрах (натуральное число, не превышающее 2 000 000). Второе число - расстояние от начала автомагистрали до конца проблемного участка в метрах (натуральное число, не превышающее 2 000 000).
  6. Запишите в ответе два числа: количество непрерывных ремонтируемых участков автомагистрали и общую длину ремонтируемых участков. Пример входного файла:
  7. 7
  8. 10 40
  9. 50 130
  10. 70 130
  11. 75 90
  12. 120 170
  13. 140 170
  14. 150 180'''
  15.  
  16.  
  17. d = set()
  18. with open('/Users/alex26/Downloads/26_2480 (1).txt', 'r') as f:
  19.     for _ in range(int(f.readline())):
  20.         a = [int(x) for x in f.readline().strip().split()]
  21.         for y in range(a[0], a[1] + 1):
  22.             d.add(y)
  23.  
  24. d = list(d)
  25. d.sort()
  26. roads = []
  27. prv = []
  28.  
  29. for i in d:
  30.     if not prv:
  31.         prv.append(i)
  32.     elif prv[-1] + 1 == i:
  33.         prv.append(i)
  34.     else:
  35.         roads.append([prv[0], prv[-1]])
  36.         prv = [i]
  37.  
  38. if prv:
  39.     roads.append(prv)
  40.  
  41. print(len(roads), sum([max(i) - min(i) for i in roads])) #1222 822098; правильный ответ - 1226 822094
  42.  
Add Comment
Please, Sign In to add comment