Pagini recente » Cod sursa (job #329549) | Arhiva de probleme | ONIS 2015, Solutii Runda 1 | Cod sursa (job #1717550) | Cod sursa (job #2235995)
#include <iostream>
#include <fstream>
using namespace std;
ifstream intrare("scmax.in");
ofstream iesire("scmax.out");
int n,a[100000],lg[100000],k,g,aux[100000],pred[100000],i,j,z,lgmax=-1;
int main()
{
intrare>>n;
for(i=0; i<n; i++)
intrare>>a[i];
for(i=0; i<n; i++)
lg[i]=1;
for(i=0; i<n; i++)
for(j=0; j<i; j++)
if(a[j]<a[i])
{
z=lg[j]+1;
if(z>=lg[i])
{
lg[i]=z;
pred[i]=j;
}
if(lg[i]>lgmax)
{
lgmax=lg[i];
g=i;
}
}
i=g;
z=1;
aux[z]=a[g];
z++;
do
{
aux[z]=a[pred[i]];
if(lg[i]==1)
break;
for(j=i-1; j>=0; j--)
if(lg[j]==lg[i]-1)
{
i=j;
break;
}
z++;
}
while(i!=1);
iesire<<lgmax<<endl;
for(i=z-1; i>=1; i--)
iesire<<aux[i]<<" ";
return 0;
}