Pagini recente » Cod sursa (job #6619) | Cod sursa (job #1114151) | Cod sursa (job #1117883) | Cod sursa (job #2773979) | Cod sursa (job #2807573)
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;
struct data{
int val;
int len;
int last;
};
data v[100000];
stack<int> stiva;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int main()
{
int n;
fin>>n;
for(int i=0;i<n;i++){
fin>>v[i].val;
v[i].len = 1;
v[i].last = -1;
for(int j=0;j<i;j++)
if(v[j].val < v[i].val && v[j].len >= v[i].len){
v[i].len = v[j].len + 1;
v[i].last = j;
}
}
int maxval =1, maxi =0;
for(int i=0 ;i<n;i++)
if(v[i].len > maxval){
maxval = v[i].len;
maxi = i;
}
fout<<maxval<<"\n";
while(maxi!= -1){
stiva.push(v[maxi].val);
maxi = v[maxi].last;
}
while(!stiva.empty()){
fout<<stiva.top()<<" ";
stiva.pop();
}
return 0;
}