Pagini recente » Cod sursa (job #2796426) | Cod sursa (job #2677281) | Cod sursa (job #2469381) | Cod sursa (job #307819) | Cod sursa (job #2150774)
#include <iostream>
#include <cstdio>
#include <fstream>
using namespace std;
int n, a[100005], nou[100005],maxi, poz[100005],p;
ifstream f("scmax.in");
ofstream g("scmax.out");
void constr()
{
int i=p;
while (i>=0)
{
g << a[i] <<' ';
i=poz[i];
}
/* for (int i=1; i<=n; i++)
{
cout << poz[i] <<' ';
}*/
}
void dinamic()
{
p=n;
poz[n]=-1;
nou[n]=1;
for (int i=n-1; i>=1; i--)
{
nou[i]=1;
poz[i]=-1;
for (int j=i+1; j<=n; j++)
{
if (a[i]<a[j] && nou[j]+1>nou[i])
{
poz[i]=j;
nou[i]=nou[j]+1;
if (nou[i]>maxi)
maxi=nou[i], p=i;
//break;
}
}
}
g << maxi<<endl;
constr();
}
int main()
{
f>>n;
for (int i=1; i<=n; i++)
{
f >> a[i];
}
dinamic();
return 0;
}