Pagini recente » Cod sursa (job #2988895) | Cod sursa (job #1698967) | Cod sursa (job #2578241) | Cod sursa (job #2688197) | Cod sursa (job #1319861)
#include <fstream>
using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
int n,v[100005],pred[100005],dp[100005],poz,rez,i,j,sol[100005];
int main()
{
int max=0,maxi=0;
in>>n;
for(i=1;i<=n;i++)
{
in>>v[i];
}
dp[1]=1;
pred[1]=0;
for(i=2;i<=n;i++)
{
max = 0;
for(j=1;j<i;j++)
if(dp[j]>max && v[j]<v[i])
{
max = dp[j];
poz=j;
}
dp[i]=max+1;
pred[i]=poz;
}
maxi=0;
for(i=1;i<=n;i++)
{
if(dp[i]>maxi)
maxi=dp[i],poz=i;
}
i=1;
while(poz)
{
sol[i]=poz;
poz=pred[poz];
i++;
}
for (int st = 1, dr = i - 1; st <= dr; ++st, --dr)
swap(sol[st], sol[dr]);
out<<maxi << "\n";
for(i=1;i<=maxi;i++)
{
out<<v[sol[i]];
}
return 0;
}