#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n;
void DP(int *dp,double *h)
{
int i,j,max;
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
{
max=0;
for(j=1;j<i;j++)
{
if(h[i]>h[j])//
{
if(dp[j]>max)
max=dp[j];
}
}
dp[i]=max+1;
//cout<<dp[i]<<"";
}
//cout<<endl;
}
int main()
{
int i,j,dp1[1005],dp2[1005],max=0;
double h[1005],hc[1005];
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%lf",&h[i]);
hc[n-i+1]=h[i];
}
DP(dp1,h);
DP(dp2,hc);
for(i=1;i<=n;i++)
{
for(j=1;j<n-i+1;j++)
{
if(dp1[i]+dp2[j]>max)
{
max=dp1[i]+dp2[j];
}
}
}
cout<<n-max<<endl;
return 0;
}
poj1836 Alignment
最新推荐文章于 2021-07-09 14:15:03 发布