Pagini recente » Cod sursa (job #2893275) | Cod sursa (job #926431) | Cod sursa (job #1021736) | Cod sursa (job #1336421) | Cod sursa (job #2043987)
#include <fstream>
#define lim 100003
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int n,v[lim],best[100], maxi,sol=0,poz[lim],p;
void read ()
{
f>>n;
for (int i=1;i<=n;++i)
f>>v[i];
}
void formare ()
{
best[n]=1;
poz[n]=-1;
maxi=1; p=n;
for(int i=n-1;i>=1;--i)
{
best[i]=1;
poz[i]=-1;
for(int j=i+1;j<=n;++j)
if(v[i]<v[j] && best[i]<best[j]+1)
{
best[i]=best[j]+1;
poz[i]=j;
if(best[i]>maxi)
{
maxi=best[i];
p=i;
}
}
}
g<<maxi<<'\n';
}
void construct()
{
int i;
i=p;
while(i!=-1)
{
g<<v[i]<<' ';
i=poz[i];
}
}
int main()
{
read();
formare();
construct();
return 0;
}