Pagini recente » Cod sursa (job #1417016) | Cod sursa (job #483256) | Cod sursa (job #2349884) | Cod sursa (job #2732367) | Cod sursa (job #333501)
Cod sursa(job #333501)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("date.in");
ofstream cout("date.out");
long i,n,k,last,maxim;
vector<long> x,aux,a;
vector<long>::iterator it;
vector<long>::reverse_iterator it2;
int main()
{
cin>>n;
for(i=0; i<n; i++)
{
cin>>k;
x.push_back(k);
it = lower_bound(aux.begin(),aux.end(),k);
a.push_back(it - aux.begin() +1);
//cout<<a.back()<<' ';
if(it == aux.end())
aux.push_back(k);
else
*it = k;
if(a.back() > a[maxim])
maxim= a.size()-1;
}
aux.clear();
aux.push_back(x[maxim]);
for(i = maxim-1; a[maxim]>1; i--)
{
if(x[i] < x[maxim] && a[i] == a[maxim]-1)
{
aux.push_back(x[i]);
maxim=i;
}
}
cout<<aux.size()<<endl;
for(it2 = aux.rbegin(); it2!=aux.rend(); it2++)
cout<<*it2<<' ';
return 0;
}