Pagini recente » Cod sursa (job #2783061) | Cod sursa (job #2245933) | Cod sursa (job #1089021) | Cod sursa (job #1127233) | Cod sursa (job #1044634)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.in");
int a[100000], b[100000], p[100000] , sol[100000];
int maxim(int a, int b) {if(a>b) return a; else return b;}
int main()
{
int n, m=0, indice;
f >> n;
for(int i=1; i<=n; i++) f >> a[i];
for(int i=1; i<=n; i++) b[i]=1;
for(int i=1; i<=n; i++) p[i]=0;
for(int i=1; i<=n; i++)
for(int j=1; j<i; j++)
{
if(a[j] < a[i])
{
b[i]=maxim(b[i], b[j]+1);
if(b[i]==b[j]+1) p[i]=j;
}
}
for(int i=1; i<=n; i++) if(b[i]>m) m=b[i], indice=i;
g << m <<"\n";
for(int i=m; i>=1; i--)
{
sol[i]=a[indice];
indice=p[indice];
}
for(int i=1; i<=m; i++) g << sol[i] <<" ";
return 0;
}