DMOPC '16 Contest 1 P2 - Lines

View as PDF

Submit solution


Points: 7 (partial)
Time limit: 1.0s
Memory limit: 64M

Authors:
Problem type

jackyliao123 is learning how to calculate the intersections of lines in math class. Being quite good at math, he quickly becomes bored and fell asleep. In his dream, he descended into a 2-dimensional world containing N lines.

jackyliao123 is wondering how many times the lines cross each other. Since there are way too many lines for jackyliao123 to count, he calls you in desperation.

Each line is represented in slope-intercept form, where you are given both the slope and the y-intercept (y=mx+b).

Note that if there are multiple lines that cross each other at the exact same point, please count the pairs of lines that intersect at that point. More specifically, if N lines intersect at the same point, that point should be counted (N2) times.

If 2 lines are congruent (with the same slope and y-intercept), print Infinity (since 2 congruent lines intersect at an infinite number of points).

Constraints

Subtask 1 [90%]

1N5000

1000mi1000

1000bi1000

Subtask 2 [10%]

1N105

109mi109

109bi109

Input Specification

The first line contains an integer N, indicating the number of lines you are given.

On each of the following N lines are 2 integers mi and bi, indicating the slope and y-intercept of each of the lines.

Output Specification

On the first line output the number of pairs of lines that intersect.

Note: It is recommended to use 64-bit integers when computing the answer.

Sample Input

Copy
3
1 1
1 -1
-1 3

Sample Output

Copy
2

Explanation for Sample Output

The 3 lines intersect at (1,2) and (2,1).


Comments


  • -4
    iNfaM0usBlue  commented on Oct. 11, 2016, 8:32 p.m.

    What does (N 2) mean...?


    • 3
      FatalEagle  commented on Oct. 11, 2016, 8:50 p.m.

      It means "N choose 2", which is equal to N×(N1)2