বুধবার, ১ আগস্ট, ২০১২

UVa-497 Strategic Defense Initiative


#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;

#define MAX 10000

int len[MAX+5],pre[MAX+5],seq[MAX+5],output[MAX+10];
int N,maX,highest;

int lis(int N)
{
    int i,j;
    for(i=0;i<N;i++)len[i]=1;

    for(i=0;i<N;i++)
       for(j=i+1;j<N;j++){if(seq[j]>seq[i]){ if(len[i]+1>len[j]){len[j]=len[i]+1;
                                                                                                   pre[j]=i;
                                                                                                      }

                                                                     }
       }
       maX=0;
   for(i=N-1;i>=0;i--){if(maX<len[i]){maX=len[i];highest=i;}
                                      }

       return maX;
}

void printlcs()
{  output[maX]=seq[highest];
    for(int i=maX-1;i>0;i--){ output[i]=seq[pre[highest]];
                                               highest=pre[highest];
                                                  }
for(int i=1;i<=maX;i++)cout<<output[i]<<endl;

return ;
}


int main()
{
    int tc,t=0;
    scanf("%d",&tc);
    getchar();
    char ch[20];
    bool blank=false;

    gets(ch);
    while(tc--){int I=0;
    while(gets(ch) &&strlen(ch))
    {

         //puts(ch);
                                                     int J=atoi(ch);
                                                     seq[I++]=J;
                                                     //cout<<J<<endl;




    }
    //cout<<I<<endl;
    if(blank)cout<<endl;
    blank=true;
    int res=lis(I);
    printf("Max hits: %d\n",res);
    printlcs();

}
return 0;
}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন