Pagini recente » Rating Andrei Simion (andrei0simion) | Istoria paginii utilizator/airineiv | Diamante | Cod sursa (job #2001305) | Cod sursa (job #1382487)
#include<fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,v[100001],c[100001],d[100001],max1=0;
void citire()
{
fin>>n;
for(int a=1;a<=n;a++)
{
fin>>v[a];
}
}
void fct(int x)
{
for(int a=x-1;a>=1;a--)
{
if(c[a]<c[x]+1 and v[a]<=v[x])
{
c[a]=c[x]+1;
if(c[a]>c[max1]) max1=a;
d[a]=x;
fct(a);
}
}
}
int main()
{
citire();
max1=n;
for(int a1=n;a1>=1;a1--)
{
if(c[a1]==0)
{
c[a1]=1;
fct(a1);
}
}
fout<<c[max1]<<'\n';
while(max1)
{
fout<<v[max1]<<" ";
max1=d[max1];
}
}