#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Mar 11 14:32:58 2025 @author: ania """ def przyklady(i): if i==1: return 10, 2, 7, [[5, 9], [1, 2]] if i==2: return 15, 4, 9, [[4,5], [10, 13], [1,1], [6,9]] def readData(): n,m,s = [int(x) for x in input().split()] przedzialy = [[] for i in range(m)] for i in range(m): l, r = [int(x) for x in input().split()] przedzialy[i] = [l,r] return n,m,s,przedzialy def w_przedziale(x, przedz): if x >= przedz[0] and x <= przedz[1]: return True else: return False def rozwiazanie(n,m,s,przedz): # znajdz przedzial ze szkola for i in range(m): if w_przedziale(s, przedz[i]): ind_s = i break # znajdz najblizszy wolny budynek z lewej L = przedz[ind_s][0]-1 distL = n+1 # wartosc na pewno za duza while L>0: wolne = True # hipoteza- dalej sprawdzamy czy to prawda for i in range(m): if w_przedziale(L, przedz[i]): wolne = False L = przedz[i][0]-1 break if wolne: distL = s-L break # znajdz najblizszy wolny budynek z prawej R = przedz[ind_s][1]+1 distR = n+1 # wartosc na pewno za duza while R <n+1: wolne = True # hipoteza- dalej sprawdzamy czy to prawda for i in range(m): if w_przedziale(R, przedz[i]): wolne = False R = przedz[i][1]+1 break if wolne: distR = R-s break # wybierz rozwiazanie if distL <= distR: return L else: return R n, m, s, przedz = readData() #przyklady(2) ans = rozwiazanie(n, m, s, przedz) print(ans)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Tue Mar 11 14:32:58 2025 @author: ania """ def przyklady(i): if i==1: return 10, 2, 7, [[5, 9], [1, 2]] if i==2: return 15, 4, 9, [[4,5], [10, 13], [1,1], [6,9]] def readData(): n,m,s = [int(x) for x in input().split()] przedzialy = [[] for i in range(m)] for i in range(m): l, r = [int(x) for x in input().split()] przedzialy[i] = [l,r] return n,m,s,przedzialy def w_przedziale(x, przedz): if x >= przedz[0] and x <= przedz[1]: return True else: return False def rozwiazanie(n,m,s,przedz): # znajdz przedzial ze szkola for i in range(m): if w_przedziale(s, przedz[i]): ind_s = i break # znajdz najblizszy wolny budynek z lewej L = przedz[ind_s][0]-1 distL = n+1 # wartosc na pewno za duza while L>0: wolne = True # hipoteza- dalej sprawdzamy czy to prawda for i in range(m): if w_przedziale(L, przedz[i]): wolne = False L = przedz[i][0]-1 break if wolne: distL = s-L break # znajdz najblizszy wolny budynek z prawej R = przedz[ind_s][1]+1 distR = n+1 # wartosc na pewno za duza while R <n+1: wolne = True # hipoteza- dalej sprawdzamy czy to prawda for i in range(m): if w_przedziale(R, przedz[i]): wolne = False R = przedz[i][1]+1 break if wolne: distR = R-s break # wybierz rozwiazanie if distL <= distR: return L else: return R n, m, s, przedz = readData() #przyklady(2) ans = rozwiazanie(n, m, s, przedz) print(ans) |