您的位置:首页 > 其它

POJ 1836 Alignment 士兵队列

2011-11-03 21:04 429 查看
View Code

#include<cstdio>
#include<cstdlib>
#include<cstring>
long N;
double soid[1001];
long li[1001],ld[1001];
long ans;
void init()
{
scanf("%ld",&N);
for(long i=0;i!=N;i++)
scanf("%lf",&soid[i]);
ans=0;
for(long i=0;i!=N;i++)
li[i]=ld[i]=1;
}
void produce()
{
for(long i=1;i<=N;i++)
for(long j=0;j!=i;j++)
if(soid[i]>soid[j])
li[i]=li[i]>li[j]+1?li[i]:li[j]+1;
for(long i=N;i!=0;i--)
for(long j=N+1;j!=i;j--)
if(soid[i]>soid[j])
ld[i]=ld[i]>ld[j]+1?ld[i]:ld[j]+1;
}
void solve()
{
long i,j,lis,lds;
for(lis=0,i=0;i!=N;i++)
{
lis=lis>li[i]?lis:li[i];
for(lds=0,j=i+1;j!=N;j++)
lds=lds>ld[j]?lds:ld[j];
ans=ans>lis+lds?ans:lis+lds;
}
}
int main()
{
init();
produce();
solve();
printf("%ld\n",N-ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: