> よって飛び越えないためにはkをY/lを越えない最大の整数にすれば大丈夫に思えます。しかし、一つ飛び越えたということは交わったということなので実際には(Y/l+1)を越えない最大の整数にすればいいのです。

ここの Y は X じゃね。ていうか Y は k の関数 Y(k) じゃね。

ソースにコメントつけたらどうだ。
構造体 line の int a,b,c とか意味が分からん。あとラムダは lambda な。
二乗するのに pow() とか使ってんな。ていうか直線との距離に sqrt なんていらんだろ。単位法線との内積を取れ。