#include<bits/stdc++.h>
using namespace std;
#define mx 100005
long value[100005];
long dp[mx],dir[mx];
long longest(long u)
{
if(dp[u]!=-1) return dp[u];
long maxi=0;
for(long v=u-1; v>=0; v--)
{
if(value[v]>value[u])
{
if(longest(v)>maxi)
{
maxi=longest(v);
dir[u]=v;
}
}
}
dp[u]=1+maxi;
return dp[u];
}
int main()
{
long n,cs=1;
while(cin>>n)
{
long k=0;
if(n==-1)
break;
else
value[k++]=n;
while(cin>>n)
{
if(n==-1)
break;
else
value[k++]=n;
}
memset(dp,-1,sizeof dp);
memset(dir,-1,sizeof dir);
int LIS=0,start;
for(int i=k-1; i>=0; i--)
{
if(longest(i)>LIS)
{
LIS=longest(i);
start=i;
}
}
if(cs!=1)
printf("\n");
printf("Test #%ld:\n maximum possible interceptions: %ld\n",cs++,LIS);
}
return 0;
}
using namespace std;
#define mx 100005
long value[100005];
long dp[mx],dir[mx];
long longest(long u)
{
if(dp[u]!=-1) return dp[u];
long maxi=0;
for(long v=u-1; v>=0; v--)
{
if(value[v]>value[u])
{
if(longest(v)>maxi)
{
maxi=longest(v);
dir[u]=v;
}
}
}
dp[u]=1+maxi;
return dp[u];
}
int main()
{
long n,cs=1;
while(cin>>n)
{
long k=0;
if(n==-1)
break;
else
value[k++]=n;
while(cin>>n)
{
if(n==-1)
break;
else
value[k++]=n;
}
memset(dp,-1,sizeof dp);
memset(dir,-1,sizeof dir);
int LIS=0,start;
for(int i=k-1; i>=0; i--)
{
if(longest(i)>LIS)
{
LIS=longest(i);
start=i;
}
}
if(cs!=1)
printf("\n");
printf("Test #%ld:\n maximum possible interceptions: %ld\n",cs++,LIS);
}
return 0;
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন