Pagini recente » Cod sursa (job #1040187) | Cod sursa (job #3003569) | Cod sursa (job #304995) | Cod sursa (job #1918353) | Cod sursa (job #2914853)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int a[100001],dp[100001],pred[100001];
void afisare(int pos)
{
if(pred[pos]==-1)
{out<<a[pos]<<" ";
return;}
afisare(pred[pos]);
out<<a[pos]<<" ";
}
int main()
{
int n;
in>>n;
for(int i=1; i<=n; i++)
{in>>a[i];
pred[i]=-1;
}
dp[1]=1;
for(int i=2; i<=n; i++)
{
dp[i]=1;
for(int j=1; j<=i-1; j++)
{
if(a[i]>a[j])
if(dp[i]<dp[j]+1)
{
dp[i]=dp[j]+1;
pred[i]=j;
}
}
}
int maxim=dp[1];
int pos_max=1;
for(int i=2; i<=n; i++)
{
if(maxim<dp[i])
{
pos_max=i;
maxim=dp[i];
}
}
out<<maxim<<'\n';
afisare(pos_max);
return 0;
}