Pagini recente » Cod sursa (job #162883) | Cod sursa (job #1865053) | Cod sursa (job #2133025) | Cod sursa (job #613937) | Cod sursa (job #2037863)
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
struct co
{
int nr, l, poz;
}z[100000];
int main()
{
int n, maxi=0, maxi2=0, dep, dep2;
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>z[i].nr;
z[i].l=1;
maxi=0;
if(i>=2)
{
int m=i-1;
do
{
if(z[i].nr>z[m].nr)
{
int a=1, b=z[m].l;
if(maxi<=(a+b))
{
maxi=a+b;
z[i].l=z[m].l+1;
z[i].poz=m;
dep2=z[m].poz;
}
}
if(z[i].nr<z[m].nr)
{
if(z[i].poz==0)
z[i].poz=i;
}
if(dep2==m)
dep2=z[m].poz;
m--;
}while(m>=1);
if(maxi2<maxi)
{
maxi2=maxi;
dep=i;
}
}
else
{
z[i].l=1;
z[i].poz=1;
}
}
fout<<maxi2<<'\n';
int pozcu=dep2, ct=0;
fout<<z[dep2].nr<<' ';
for(int i=dep2+1;i<=n;i++)
{
if(pozcu==z[i].poz)
{
pozcu=i;
fout<<z[i].nr<<' ';
ct++;
}
if(ct==maxi2)
break;
}
return 0;
}