我们可以对于这 2 段 dp 一下,f1_{i} 表示将前 i 个座位分成 2 个递增序列后不以座位 i 结尾的递增序列的结尾的最小值,f2_i 表示将后 n-i+1 个座位分成 2 个递减序列后不以座位 i 为开头的递减序列的开头的最小值。
我们可以直接将 f_2 的值计算到最高座位的位置,然后从最高座位到座位 n 依次判断可行性。对于第 2 段,我们可以再进行一下 dp,dp_{i,0} 表示把座位 i 放在递增序列末尾递减序列末尾的最大值,dp_{i,1} 表示把座位 i 放在递减序列末尾递增序列末尾的最小值。dp 的初值可以从第 1 段计算的 f1 转移过来。