Pagini recente » Cod sursa (job #1145595) | Cod sursa (job #2890246) | Cod sursa (job #1867906) | Cod sursa (job #2797985) | Cod sursa (job #2549372)
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int a[NMAX], dp[NMAX];
int n;
int rez[NMAX],k;
int anterior, ant[NMAX];
int main()
{
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
int maxi=0;
for(int i=1;i<=n;i++)
{
maxi=0;
anterior=0;
for(int j=1;j<=n;j++)
if(a[i]>a[j] and dp[j]>maxi)
{
maxi=dp[j];
anterior=j;
}
dp[i]=1+maxi;
ant[i]=anterior;
}
int pos;
for(int i=1;i<=n;i++)
if(dp[i]>maxi)
{
maxi=dp[i];
pos=i;
}
do{
rez[++k]=a[pos];
pos=ant[pos];
}while(pos);
for(int i=k;i>=1;i--)
g<<rez[i]<<" ";
f.close();
g.close();
return 0;
}