Pagini recente » Monitorul de evaluare | Cod sursa (job #2553964)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int a[100005],tatic[100005],n;
void afisare(int n)
{
if (tatic[n]) afisare(tatic[n]);
fout << a[n] << " ";
}
int main()
{
int dp[1005],rez=0,cap=0;
fin >> n;
for (int i=1;i<=n;i++)
{
fin >> a[i];
dp[i]=1;
}
for (int i=2;i<=n;i++)
{
for (int j=1;j<=i;j++)
{
if (a[i]>a[j])
{
if (dp[j]+1>dp[i])
{
dp[i]=dp[j]+1;
tatic[i]=j;
}
}
}
}
for (int i=1;i<=n;i++)
{
if (dp[i]>rez)
{
rez=dp[i];
cap=i;
}
}
fout << rez << '\n';
afisare(cap);
}