#include<iostream>
using namespace std;
int len1[200010] , len2[200010] , a[200010];
int main()
{
int i,n,j,k,max;
cin>>n>>k;
for(i = 1; i <= n; i++)
{
cin>>a[i];
len1[i] = 1;
len2[i] = 1;
}
for(i = n-1; i >= k; i--)
{
max = 0;
for(j = i+1; j <= n; j++) //j初始值!!
{
if(a[i] < a[j] && len2[j] > max) //大小!!
{
max = len2[j];
}
}
len2[i] = max + 1;
}
/* for(i = k; i <= n; i++)
cout<<len2[i]<<" ";
cout<<endl;
*/
/* for(i = k-1; i >= 1; i--)
{
max = len1[i];
for(j = i+1; j <= k; j++)
{
if(a[i] < a[j] && max < len1[j])
{
max = len1[j];
}
}
len1[i] += max;
}
cout<<len1[k]<<" "<<len2[k]<<endl;
*/
for(i = 2; i <= k; i++)
{
max = 0;
for(j = i-1; j >= 1; j--)
{
if(a[i] > a[j] && len1[j] > max)
{
max = len1[j];
}
}
len1[i] = max + 1;
}
/* for(i = 1; i <= k; i++)
cout<<len1[i]<<" ";
cout<<endl;
cout<<len1[k]<<" "<<len2[k]<<endl;
*/
cout<<len1[k] + len2[k] - 1<<endl;
return 0;
}
我 的思路:k后的最长,逆序 + k前的最长,升序
temp:两个点TLE,改进ing.........
************************************************************************************可供吐槽