Cod sursa(job #181576)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 18 aprilie 2008 16:19:02
Problema Secv Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#include <stdlib.h>
#define N 5010
int v[N],lung[N],pred[N];
int n;
void scan(){
     int i;
     freopen("secv.in","r",stdin);
     freopen("secv.out","w",stdout);
     scanf("%d",&n);
     for (i=1;i<=n;++i)
         scanf("%d",&v[i]);
}
void subsir(){
     int i,j;
     lung[1]=1;pred[1]=-1;
     for (i=2;i<=n;++i){
         pred[i]=-1;lung[i]=1;
         for (j=1;j<i;++j)
             if (v[j]<v[i] && lung[j]>=lung[i]){
                lung[i]=lung[j]+1;
                pred[i]=j;
             }
     }
}
int predecesor(int x){
    if (pred[x]!=-1)
       return predecesor(pred[x]);
    else
        return x;
}
void print(){
     int max=0,i,x;
     for (i=1;i<=n;++i)
         if (lung[i]>max){
            max=lung[i];
            x=i;
         }
     printf("%d\n",x-predecesor(x)+1);
     fclose(stdin);
     fclose(stdout);
     exit(0);
}
int main(){
    scan();
    subsir();
    print();
}