Pagini recente » Cod sursa (job #136744) | Cod sursa (job #1120983) | luca_oji4 | Cod sursa (job #2714444) | Cod sursa (job #1817238)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int a[100005],n,DP[100005],Sol1[100005],Max,Sol[100005];
void Read()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
}
void Solve()
{
int x=0,poz;
for(int i=1;i<=n;i++)
{
x=0;
for(int j=1;j<=i;j++)
{
if(a[i]>a[j])
{
if(x<DP[j])
{
x=DP[j];
Sol[i]=j;
}
}
}
DP[i]=x+1;
}
for(int i=1;i<=n;i++)
{
if(Max<DP[i])
{
Max=DP[i];
poz=i;
}
}
fout<<Max<<"\n";
int Max1=Max;
while(poz)
{
Sol1[Max]=a[poz];
Max--;
poz=Sol[poz];
}
for(int i=1;i<=Max1;i++)
fout<<Sol1[i]<<" ";
}
int main()
{
Read();
Solve();
return 0;
}