Pagini recente » Cod sursa (job #2318181) | Cod sursa (job #1672738) | Cod sursa (job #1222366) | Cod sursa (job #2835925) | Cod sursa (job #1319866)
#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 maxim=0,maximi=0;
in>>n;
for(i=1;i<=n;i++)
{
in>>v[i];
}
dp[1]=1;
pred[1]=0;
for(i=2;i<=n;i++)
{
maxim = 0;
poz = 0;
for(j=1;j<i;j++)
if(dp[j]>maxim && v[j]<v[i])
{
maxim = dp[j];
poz=j;
}
dp[i]=maxim+1;
pred[i]=poz;
}
maximi=0;
for(i=1;i<=n;i++)
{
if(dp[i]>maximi)
maximi=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<<maximi << "\n";
for(i=1;i<=maximi;i++)
{
out<<v[sol[i]]<<" ";
}
return 0;
}