http://acm.pku.edu.cn/JudgeOnline/problem?id=1887
#include<stdio.h>
long int f[50000],a[50000];
int main()
{
long int t,l,n,i,j,max,k=0,flag;
t=0;
while(1)
{
k++;
l=0;
flag=0;
while(1)
{
scanf("%ld",&n);
if(n==-1)
{
if(l==0)flag=1;
break;
}
else a[l++]=n;
}
for(i=0;i<l;i++)
f[i]=1;
max=0;
for(i=0;i<l;i++)
{
for(j=i+1;j<l;j++)
{
if(a[j]<=a[i]&&f[i]+1>f[j])
f[j]=f[i]+1;
if(max<f[j])
max=f[j];
}
}
if(flag==1)break;
printf("Test #%ld:/n",k);
if(l==1)//考虑只有一个元素
printf(" maximum possible interceptions: 1/n/n");
else
printf(" maximum possible interceptions: %d/n/n",max);
}
return 0;
}