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
linijka= input().split()
N = int(linijka[0]) #ilość budynków na ulicy
M = int(linijka[1]) #ilośc budynków zajętych
S = int(linijka[2]) #szkoła, zawsze zajęta

def zajete():
    budynki = [True for _ in range(N+1)] #budynek 0 zawsze nie zajęty, ale to dlatego, żeby index był numerem budynku
    for _ in range(M):
        linia = input().split()
        li = int(linia[0])
        ri = int(linia[1])
        for x in range(li,ri+1):
            budynki[x] = False
    return budynki

def mieszkanie(budynki : []):

    najblizszy_budynek_z_lewej = -1
    najblizszy_budynek_z_prawej = -1
    for x in range(S-1,1,-1):
        if budynki[x]:
            najblizszy_budynek_z_lewej = x
            break
    for x in range(S+1,N+2):
        if budynki[x]:
            najblizszy_budynek_z_prawej = x
            break

    if najblizszy_budynek_z_lewej == -1:
        print(najblizszy_budynek_z_prawej)

    elif najblizszy_budynek_z_prawej == -1:
        print(najblizszy_budynek_z_lewej)

    elif abs(S - najblizszy_budynek_z_lewej) <= abs(S - najblizszy_budynek_z_prawej):
        print(najblizszy_budynek_z_lewej)
    else:
        print(najblizszy_budynek_z_prawej)

zajete_budynki = zajete()
mieszkanie(zajete_budynki)