AT_code_festival_final_e 常ならずグラフ
Description
[problemUrl]: https://atcoder.jp/contests/code-festival-2014-final/tasks/code_festival_final_e
Tさんは,諸行無常をモットーにいろいろなことに挑戦しています. Tさんはあるコンテストに長期的に参加していますが,そのコンテストにはレーティング機能があり,一度参加する毎にレーティングが変動します.それらの変動はグラフにまとめられています.
今,Tさんは彼のレーティング変動がプロットされたグラフを眺めています.彼はふと,グラフから一部の点を取り除いてそれらを結び,常に上下に変動しているような折れ線グラフ,名付けて「常ならずグラフ」を作りたくなりました. さらに,グラフに含まれる点の数が最も多いものに興味があります.
さて,あなたはTさんのために,彼のレーティング変動がプロットされたグラフから作ることのできる「常ならずグラフ」の中での最大の点の数を求めてあげることにしました.
あなたには,Tさんのあるコンテスト参加後でのレーティングが,$ N $ 個,時系列で与えられます.その中からいくつかの点を取り除き「常ならずグラフ」を作るとき,ありうる点の最大数を求めなさい.常ならずグラフが作れないときは $ 0 $ を出力しなさい.
あるグラフ $ X=\{x_1,x_2,x_3,..x_n\} $ が「常ならずグラフ」であるとは, $ |X| $ が $ 3 $ 以上かつ, $ x_1<x_2>x_3<x_4>... $ もしくは $ x_1>x_2<x_3>x_4\
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ R_1 $ $ R_2 $ … $ R_N $
- $ 1 $ 行目には,Tさんのコンテスト参加回数を表す整数 $ N\ (1\ ≦\ N\ ≦\ 3000) $ が与えられる.
- $ 2 $ 行目には, Tさんが $ i\ (1\ ≦\ i\ ≦\ N) $ 番目のコンテストに参加した直後のレーティング $ R_i\ (-10^5\ ≦\ R_i\ ≦\ 10^5) $ が空白切りで与えられる.
Output Format
与えられたグラフからいくつかの点を取り除き「常ならずグラフ」を作るとき,ありうる点の最大数を求め,$ 1 $ 行に出力しなさい.末尾の改行を忘れないこと.