Pagini recente » Cod sursa (job #223736) | Cod sursa (job #3125955) | Cod sursa (job #2846535) | Cod sursa (job #2709734) | Cod sursa (job #2236013)
#include <cstdio>
FILE *fin = freopen("scmax.in","r",stdin); FILE *fout = freopen("scmax.out","w",stdout);
static const int MAX_N = 100000 + 5;
/* ------------- DATA ------------- */
int n;
int best[MAX_N], v[MAX_N], poz[MAX_N], maxi,p;
/* ------------- DATA ------------- */
void Read()
{
scanf("%d",&n);
for(int i =1; i<= n;++i)
scanf("%d",&v[i]);
}
void Dinamica()
{
maxi = 1;
best[n]=1;
poz[n] = -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;
}
}
}
printf("%d\n",maxi);
}
void Reconstruieste()
{
int i = p;
while(i!=-1)
{
printf("%d ",v[i]);
i = poz[i];
}
}
int main()
{
Read();
Dinamica();
Reconstruieste();
}