Pagini recente » Cod sursa (job #818251) | Cod sursa (job #1239996) | Istoria paginii runda/brasov_6_sr/clasament | Cod sursa (job #1425987) | Cod sursa (job #2133594)
#include <fstream>
#define DMAX 100001
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int lgmax[DMAX],urm[DMAX],v[DMAX];
int n,maxi,urmator;
int main()
{
int i,j,maxi,urmator,pozmax;
fin>>n;
for(i=0;i<=n-1;i++)
fin>>v[i];
lgmax[n-1]=1;
urm[n-1]=-1;
//cel mai mic sufix are un element
for(i=n-2;i>=0;i--)
{
maxi=1;
urmator=-1;
for(j=i+1;j<n;j++)
if(v[i]<v[j]&&1+lgmax[j]>maxi)
{
maxi=1+lgmax[j];
urmator=j;
}
lgmax[i]=maxi;
urm[i]=urmator;
}
maxi=lgmax[0];
pozmax=0;
for(i=1;i<=n-1;i++)
if(maxi<lgmax[i])
{
maxi=lgmax[i];
pozmax=i;
}
fout<<maxi<<"\n";
fout<<v[pozmax]<<" ";
while(urm[pozmax]!=-1)
{
pozmax=urm[pozmax];
fout<<v[pozmax]<<" ";
}
return 0;
}