Pagini recente » Cod sursa (job #542854) | Monitorul de evaluare | Istoria paginii runda/cnrv_2/clasament | Simulare 27 | Cod sursa (job #2013898)
#include <iostream>
#include <fstream>
#include <vector>
#define MAX 100001
using namespace std;
int n,a[MAX],nmax[MAX],smax,mmax[MAX];
vector<int> r;
int main()
{
ifstream f ("scmax.in");
ofstream g ("scmax.out");
f>>n;
for(int i=1;i<=n;i++){
f>>a[i]; mmax[i]=1;
for(int j=smax;j>=1;j--){
if((a[i]<nmax[j]||nmax[j]==0)&&a[i]>nmax[j-1]){
nmax[j]=a[i]; mmax[i]=j+1;
if(j==smax) smax++;
break;
}
}
if(a[i]<nmax[0]||nmax[0]==0)nmax[0]=a[i];
if(i==1)smax=1;
}
g<<smax<<'\n';
for(int i=n,aj=smax;i>=1&&aj>=1;i--)
if(mmax[i]==aj)r.push_back(a[i]),aj--;
for(int i=r.size()-1;i>=0;i--)g<<r[i]<<" ";
f.close ();
g.close ();
return 0;
}