Pagini recente » Clasament urmasii_lui_taraban | Cod sursa (job #2872425) | Cod sursa (job #1078945) | Cod sursa (job #124738) | Cod sursa (job #2039314)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, v[100001], cv[100001], ant[100001], maxi=0, sol[100001], ok=1;
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
cv[i]=0;
for(int j=1;j<i;j++)
{
if(cv[j]>cv[i] && v[i]>v[j])
{
cv[i]=cv[j];
ant[i]=j;
}
}
cv[i]++;
if(cv[i]>maxi)
{
maxi=cv[i];
}
}
fout<<maxi<<'\n';
int i=n, indice=maxi;
while(i>=1)
{
if(cv[i]==maxi && ok==1)
{
sol[indice]=v[i];
i=ant[i];
ok=0;
indice--;
}
else if(ok==0)
{
sol[indice]=v[i];
i=ant[i];
indice--;
}
else
{
i--;
}
}
for(int i=1;i<=maxi;i++)
{
fout<<sol[i]<<" ";
}
return 0;
}