Lake(湖) - joi2010-day4

出典: 第9回日本情報オリンピック 春季トレーニング合宿

時間制限: 1秒

メモリ制限: 256MB

カナダの南東部, アメリカとの国境の場所には, 「五大湖」として知られる有名な5つの湖がある. このたびカナダでIOIが開催されるのに伴い, 会場にもっとも近いオンタリオ湖に観光船を運航する計画がいくつも持ち上がった.

おのおのの観光船の計画は, 湖の外周の2点を結ぶものであり, 計画は全部でN個ある. i個目の計画は, 地点s[i]と地点t[i]を結ぶ観光船を運航するというものである. ここで, 地点xとは, 湖の東の端から周に沿って反時計回りに距離xメートルだけ進んだ地点のことを指す. 湖の一周の長さは500,000メートルである.

これらの中からできるだけ多くの計画を実現させたいが, 船同士の衝突を避けるため, 2つの航路が交差してはならない.

課題(TASK)

N個の運航計画が与えられたとき, 実現できる計画の個数の最大値を求めるプログラムを作成せよ.

制限(CONSTRAINTS)

1 ≤ N ≤ 2,000 計画の数
0 ≤ s[i] < 500,000, 0 ≤ t[i] ≤ 500,000 地点の座標

入力(INPUT)

標準入力から以下の入力を読み込め.

出力(OUTPUT)

標準出力に, 与えられた運航計画のうち, 実現できる計画の個数の最大値を表す1つの整数を出力せよ.

採点基準(GRADING)

40点分のテストグループにおいて, N ≤ 200 である.

入出力例(EXAMPLE)

入力例(Sample Input) 出力例(Sample Output)
5
50000 150000
450000 100000
200000 300000
260000 350000
0 230000
3
lake-img1
上の入力例における5つの計画を表した図(地点間の間隔は正確ではない). 太線の3つの計画を選べば航路が交差することなく船を運航できる.