Pagini recente » Cod sursa (job #2181781) | Cod sursa (job #1595358) | Cod sursa (job #2157673) | Cod sursa (job #2365887) | Cod sursa (job #347950)
Cod sursa(job #347950)
#include <iostream>
#include <fstream>
using namespace std;
int v[100001];
int tata[100001];
int dp[100001];
int aux[100001];
int nr_aux;
int nr_v;
void solve()
{
fstream f("scmax.in", ios::in);
fstream g("scmax.out", ios::out);
f>>nr_v;
for (int i=1; i<=nr_v; ++i)
f>>v[i];
dp[1]=1;
tata[1]=0;
for (int i=2; i<=nr_v ;++i)
{
dp[i]=1;
tata[i]=0;
for (int j=1; j<i; ++j)
if (dp[i] <= dp[j] && v[i] > v[j])
{
dp[i]=dp[j]+1;
tata[i]=j;
}
}
int max=0;
int poz;
for (int i=1; i<=nr_v; ++i)
{
if (max < dp[i])
{
max=dp[i];
poz=i;
}
}
nr_aux=max;
for (int i=nr_aux; i>=1; --i)
{
aux[i]=v[poz];
poz=tata[poz];
}
g<<max<<"\n";
for (int i=1; i<=nr_aux; ++i)
g<<aux[i]<<" ";
}
int main()
{
solve();
return 0;
}