Top.Mail.Ru
Ответы

Помогите с кодом на питоне пожалуйста

ускорьте этот код что бы он выполнялся как можно быстрее если понадобиться можно переделать под другой язык главное что бы работал быстрее:
def count_non_intersecting_segments(N, segments):
# Function to check if two segments intersect
def intersects(segment1, segment2):
a1, b1 = segment1
a2, b2 = segment2
return not (b1 < b2 and a1 < a2 or b2 < b1 and a2 < a1)

# Array to keep track of intersection count for each segment

intersection_count = [0] * N

# Check every pair of segments
for i in range(N):
for j in range(i + 1, N):
if intersects(segments[i], segments[j]):
intersection_count[i] += 1
intersection_count[j] += 1

# Count segments that do not intersect with any other segment
non_intersecting_count = sum(
1 for count in intersection_count if count == 0)

return non_intersecting_count


# Read input
N = int(input().strip())
segments = [tuple(map(int, input().strip().split())) for _ in range(N)]

# Calculate and print the result
print(count_non_intersecting_segments(N, segments))

Дополнен
По дате
По рейтингу
Аватар пользователя
Просветленный
12345678910111213141516171819202122232425262728293031
 def count_non_intersecting_segments(N, segments): 
    # Function to check if two segments intersect 
    def intersects(segment1, segment2): 
        a1, b1 = segment1 
        a2, b2 = segment2 
        return not (b1 < b2 and a1 < a2 or b2 < b1 and a2 < a1) 
 
    # Initialize intersection count for each segment 
    intersection_count = [0] * N 
 
    # Check every segment with each of the remaining segments 
    for i in range(N): 
        for j in range(i + 1, N): 
            if intersects(segments[i], segments[j]): 
                intersection_count[i] += 1 
                intersection_count[j] += 1 
 
    # Count segments that do not intersect with any other segment 
    non_intersecting_count = sum( 
        1 for count in intersection_count if count == 0) 
 
    return non_intersecting_count 
 
 
# Read input 
N = int(input().strip()) 
segments = [tuple(map(int, input().strip().split())) for _ in range(N)] 
 
# Calculate and print the result 
print(count_non_intersecting_segments(N, segments))