Pagini recente » Cod sursa (job #2209431) | Cod sursa (job #1578328) | Cod sursa (job #2062390) | Cod sursa (job #2268671) | Cod sursa (job #2325300)
#include <iostream>
#include <fstream>
#define nmax 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[nmax],n, sol[nmax], tata[nmax], maxx,poz;
void dinamica()
{
int i,j, mx=0;
sol[1]=1;
tata[1]=-1;
maxx=1;
for(i=2; i<=n; i++)
{mx=0; sol[i]=1; tata[i]=-1;
for(j=1; j<i; j++)
{
if(v[i]>v[j])
if(sol[j]>mx)
{mx=sol[j]; tata[i]=j;}
}
sol[i]=mx+1;
if(sol[i]>maxx)
{maxx=sol[i]; poz=i;}
}
}
void drum(int p)
{
if(p!=-1)
{
drum(tata[p]);
g<<v[p]<<" ";
}
}
int main()
{
int i;
f>>n;
for(i=1; i<=n; i++)
f>>v[i];
dinamica();
g<<maxx<<endl;
drum(poz);
f.close();
g.close();
return 0;
}