P1020 导弹拦截

P1020 导弹拦截
打的最多是最长不下降,最少是最长上升,因为打了小的一个就必须再开一个系统。

#include<bits/stdc++.h>
using namespace std;
int f[110],a[110],b[110],n,ff[110];
int an;
int ans;
int main()
{
  int n=0;
  while(scanf("%d",&a[++n])!=EOF)
  {
        b[n]=a[n];
  }
  n--;
   sort(b+1,b+n+1);
   int l=unique(b+1,b+n+1)-b;
   for(int i=1;i<=l;i++)
    a[i]=lower_bound(b+1,b+n+1,a[i])-b;
    for(int i=1;i<=n;i++)
      {
          f[i]=1;
          ff[i]=1;
      }
  for(int i=1;i<=n;i++)
    for(int j=1;j<i;j++)
      {
          if(a[i]<=a[j])
           f[i]=max(f[i],f[j]+1);
           an=max(an,f[i]);
      }
  cout<<an<<endl;
  for(int i=1;i<=n;i++)
    for(int j=1;j<i;j++)
      {
          if(a[j]<a[i])
           ff[i]=max(ff[i],ff[j]+1);
           ans=max(ans,ff[i]);
      }
      cout<<ans;
return 0;
}

 

posted @ 2017-10-30 16:33  WeiAR  阅读(159)  评论(0编辑  收藏  举报