시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB74719714632.088%

문제

상근이는 좌표 평면 위의 Aix + Biy + Ci = 0 로 나타낼 수 있는 직선 N개를 가지고 있다.

상근이가 가지고 있는 직선으로 만들어지는 삼각형의 개수를 구하는 프로그램을 작성하시오.

세 직선이 한 점에서 만나는 경우는 없다.

입력

첫째 줄에 직선의 개수 N이 주어진다. (1 ≤ N ≤ 300,000)

다음 N개 줄에는 i번째 직선의 Ai, Bi, Ci가 주어진다. 모든 숫자는 절댓값이 109보다 작거나 같은 정수이다.

출력

첫째 줄에 입력으로 주어진 직선이 만드는 삼각형의 개수를 출력한다. 개수가 매우 많을 수 있기 때문에, 1,000,000,007로 나눈 나머지를 출력한다.

예제 입력 1

6
0 1 0
-5 3 0
-5 -2 25
0 1 -3
0 1 -2
-4 -5 29

예제 출력 1

10

예제 입력 2

5
-5 3 0
-5 -3 -30
0 1 0
3 7 35
1 -2 -1

예제 출력 2

10
W3sicHJvYmxlbV9pZCI6Ijk5MzciLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWM5YzFcdWMxMjBcdWM3M2NcdWI4NWMgXHViOWNjXHViNGRjXHViMjk0IFx1YzBiY1x1YWMwMVx1ZDYxNSIsImRlc2NyaXB0aW9uIjoiPHA+XHVjMGMxXHVhZGZjXHVjNzc0XHViMjk0IFx1Yzg4Y1x1ZDQ1YyBcdWQzYzlcdWJhNzQgXHVjNzA0XHVjNzU4IEE8c3ViPmk8XC9zdWI+eCArIEI8c3ViPmk8XC9zdWI+eSArIEM8c3ViPmk8XC9zdWI+ID0gMCBcdWI4NWMgXHViMDk4XHVkMGMwXHViMGJjIFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVjOWMxXHVjMTIwIE5cdWFjMWNcdWI5N2MgXHVhYzAwXHVjOWMwXHVhY2UwIFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjMGMxXHVhZGZjXHVjNzc0XHVhYzAwIFx1YWMwMFx1YzljMFx1YWNlMCBcdWM3ODhcdWIyOTQgXHVjOWMxXHVjMTIwXHVjNzNjXHViODVjIFx1YjljY1x1YjRlNFx1YzViNFx1YzljMFx1YjI5NCBcdWMwYmNcdWFjMDFcdWQ2MTVcdWM3NTggXHVhYzFjXHVjMjE4XHViOTdjIFx1YWQ2Y1x1ZDU1OFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHVjMmRjXHVjNjI0LjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcL2RiZDI1NmIzLTE0NDctNDUwNS05YTRkLWY2MDMzODMxYmM1MFwvLVwvcHJldmlld1wvXCIgc3R5bGU9XCJ3aWR0aDogNDQ0cHg7IGhlaWdodDogMzQ3cHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwPlx1YzEzOCBcdWM5YzFcdWMxMjBcdWM3NzQgXHVkNTVjIFx1YzgxMFx1YzVkMFx1YzExYyBcdWI5Y2NcdWIwOThcdWIyOTQgXHVhY2JkXHVjNmIwXHViMjk0IFx1YzVjNlx1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVjOWMxXHVjMTIwXHVjNzU4IFx1YWMxY1x1YzIxOCBOXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gKDEgJmxlOyBOICZsZTsgMzAwLDAwMCk8XC9wPlxyXG5cclxuPHA+XHViMmU0XHVjNzRjIE5cdWFjMWMgXHVjOTA0XHVjNWQwXHViMjk0IGlcdWJjODhcdWM5ZjggXHVjOWMxXHVjMTIwXHVjNzU4IEE8c3ViPmk8XC9zdWI+LCBCPHN1Yj5pPFwvc3ViPiwgQzxzdWI+aTxcL3N1Yj5cdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWJhYThcdWI0ZTAgXHVjMjJiXHVjNzkwXHViMjk0IFx1YzgwOFx1YjMxM1x1YWMxMlx1Yzc3NCAxMDxzdXA+OTxcL3N1cD5cdWJjZjRcdWIyZTQgXHVjNzkxXHVhYzcwXHViMDk4IFx1YWMxOVx1Yzc0MCBcdWM4MTVcdWMyMThcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBcdWM3ODVcdWI4MjVcdWM3M2NcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0IFx1YzljMVx1YzEyMFx1Yzc3NCBcdWI5Y2NcdWI0ZGNcdWIyOTQgXHVjMGJjXHVhYzAxXHVkNjE1XHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuIFx1YWMxY1x1YzIxOFx1YWMwMCBcdWI5ZTRcdWM2YjAgXHViOWNlXHVjNzQ0IFx1YzIxOCBcdWM3ODhcdWFlMzAgXHViNTRjXHViYjM4XHVjNWQwLCZuYnNwOzEsMDAwLDAwMCwwMDdcdWI4NWMgXHViMDk4XHViMjA4IFx1YjA5OFx1YmEzOFx1YzljMFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiS29yZWFuIn0seyJwcm9ibGVtX2lkIjoiOTkzNyIsInByb2JsZW1fbGFuZyI6IjEiLCJ0aXRsZSI6IlRST0tVVEkiLCJkZXNjcmlwdGlvbiI6IjxwPllvdSBhcmUgZ2l2ZW4gTiBsaW5lcywgdGhlaXIgZXF1YXRpb25zIGJlaW5nIEE8c3ViPmk8XC9zdWI+eCArIEI8c3ViPmk8XC9zdWI+eSArIEM8c3ViPmk8XC9zdWI+ID0gMCBpbiB0aGUgY29vcmRpbmF0ZSBwbGFuZS4gQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgdHJpYW5nbGVzIHdob3NlIHNpZGVzIGxpZSBvbiB0aGUgZ2l2ZW4gbGluZXMuIFNpbmNlIHRoZSByZXN1bHQgY2FuIGJlIHZlcnkgbGFyZ2UsIG91dHB1dCB0aGUgbnVtYmVyIG1vZHVsbyAxIDAwMCAwMDAgMDA3LiZuYnNwOzxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcL2RiZDI1NmIzLTE0NDctNDUwNS05YTRkLWY2MDMzODMxYmM1MFwvLVwvcHJldmlld1wvXCIgc3R5bGU9XCJ3aWR0aDogNDQ0cHg7IGhlaWdodDogMzQ3cHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPkEgcG9zc2libGUgcG9zaXRpb24gb2YgbGluZXMuPFwvcD5cclxuXHJcbjxwPkltcG9ydGFudCBub3RlOiBObyB0aHJlZSBsaW5lcyB3aWxsIGludGVyc2VjdCBhdCB0aGUgc2FtZSBwb2ludC4mbmJzcDs8XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIG9mIGlucHV0IGNvbnRhaW5zIHRoZSBpbnRlZ2VyIE4gKDEgJmxlOyBOICZsZTsgMzAwIDAwMCksIHRoZSBudW1iZXIgb2YgbGluZXMuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkVhY2ggb2YgdGhlIGZvbGxvd2luZyBOIGxpbmVzIGNvbnRhaW5zIHRocmVlIGludGVnZXJzOiBBPHN1Yj5pPFwvc3ViPiwgQjxzdWI+aTxcL3N1Yj4gYW5kIEM8c3ViPmk8XC9zdWI+LCB0aGUgbnVtYmVycyBkZWZpbmluZyB0aGUgaTxzdXA+dGg8XC9zdXA+IGxpbmUuIEFsbCBudW1iZXJzIHdpbGwgYmUgbGVzc2VyIHRoYW4gMTA8c3VwPjk8XC9zdXA+LiZuYnNwOzxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlRoZSBmaXJzdCBhbmQgb25seSBsaW5lIG9mIG91dHB1dCBtdXN0IGNvbnNpc3Qgb2YgdGhlIHJlcXVpcmVkIG51bWJlciBmcm9tIHRoZSB0YXNrLiZuYnNwOzxcL3A+XHJcbiIsImhpbnQiOiI8cD5DbGFyaWZpY2F0aW9uIG9mIHRoZSBmaXJzdCBleGFtcGxlOiBUaGUgZXhhbXBsZSBjb3JyZXNwb25kcyB0byB0aGUgaW1hZ2UgaW4gdGhlIHRhc2suPFwvcD5cclxuIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIn1d

출처

Contest > Croatian Open Competition in Informatics > COCI 2013/2014 > Contest #5 5번

  • 문제를 번역한 사람: baekjoon
  • 문제의 오타를 찾은 사람: cheetose