SRM580 div1 250

問題

上流からうなぎが流れてくる。
うなぎiは、長さがl[i]で、最初に-t[i]にいて、原点方向へ向かって流れてくる。
すべてのうなぎは1単位時間に1だけ動く。
ある時刻で、原点に来たすべてのうなぎを捕まえることができるが、2回までしかその行為を行えない。
最大で何匹捕まえられるか。

1<=n<=50
1<=l[i],t[i]<=10^9

考え方

ある時刻について、取ることができるすべてのうなぎのインデクスを計算する。
これは、すべてのiについて、t[i]<=その時刻<=t[i]+l[i]であるかどうかで判定できる。
2つの時刻のペアについて、ユニークなインデクス数が捕まえられるうなぎの数になるので、この最大数を返せばよい。


確認する時刻は、1ごと考えるとTLEなので、注目すべき時刻を考える。
捕まえられるうなぎが変わるのは、t[i]またはt[i]+l[i]だけなので、すべて違っても高々100個なので、これらのペアを確認すればよい。

反省

ユニークなインデクスを取るのを渋って、vectorじゃなくset使ったらTLEした。
setはもう使わないほうがよさそう。
setを使ったというより、関数に配列を渡すときに&をつけ忘れて配列のコピーが作成されまくっていたのが原因だった。