Pagini recente » Cod sursa (job #1771605) | Cod sursa (job #2511011) | Cod sursa (job #2240536) | Cod sursa (job #2778781) | Cod sursa (job #2296486)
#include <bits/stdc++.h>
using namespace std;
vector< int > x;
vector< int > q;
vector< int > p;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
int main()
{
int n;
in >> n;
x.resize(n);
p.resize(n);
for(int i = 0; i < n; i++)
{
in >> x[i];
}
vector<int>::iterator it;
for(int i = 0; i < n; i++)
{
it = lower_bound(q.begin(), q.end(), x[i]);
int poz = (int) (it - q.begin());
if(poz == q.size())
{
q.push_back(x[i]);
}
q[poz] = x[i];
p[i] = poz;
}
int cnt = q.size();
stack<int> st;
out<<cnt<<"\n";
--cnt;
for(int i=n-1;i>=0;i--)
{
if(p[i] == cnt)
{
st.push(x[i]);
cnt--;
}
}
while(!st.empty())
{
out<<st.top()<<" ";
st.pop();
}
return 0;
}