Pagini recente » Cod sursa (job #165481) | Cod sursa (job #1458960) | Borderou de evaluare (job #753670) | Cod sursa (job #1128278) | Cod sursa (job #1621922)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,i,a[200000],l[200000],maxx,start,refer,st[200000];
void citire()
{fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
fin.close();
}
void cautare()
{int j=1;
while(j<=n)
{refer=a[j];
for(i=j-1;i>=1;i--)
{if(a[i]<refer){
l[j]++;
refer=a[i];
st[j]=i;}
}
l[j]++;
j++;
}
}
void maxim()
{maxx=-2;
for(i=1;i<=n;i++){
if(l[i]>maxx)
{maxx=l[i];
start=i;}
}
}
void scriere()
{
fout<<maxx<<"\n"<<a[st[maxx]]<<" ";refer=a[st[maxx]];maxx--;
for(i=++st[maxx+1];maxx>0;i++)
{
if(a[i]>refer)
{fout<<a[i]<<" ";
refer=a[i];
maxx--;}
}
}
int main()
{
citire();
cautare();
maxim();
scriere();
}