Pagini recente » Cod sursa (job #284883) | Cod sursa (job #2756798) | Cod sursa (job #43863) | Cod sursa (job #2587569) | Cod sursa (job #1997945)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("ssm.in");
ofstream g ("ssm.out");
int a[100005], c[100005], v[100005], i, j, n, nr, ls, ld, mij, rsp, x;
stack <int> st;
int main()
{
f>>n;
for ( i = 1; i <= n ; i++ )
{
f>>v[i];
}
a[1]=v[1];
nr=1;
for ( i=2 ; i <=n; i++ )
{
x = v[i];
ls=1;
ld=nr;
rsp = 0;
while (ls<=ld)
{
mij = (ls+ld)/2;
if ( a[mij] < x )
{
rsp = mij;
ls = mij + 1;
}
else
{
ld = mij - 1;
}
}
if(rsp == nr)
{
nr++;
}
a[rsp+1] = x;
c[i] = rsp+1;
}
for ( i = n; i >= 1 ; i-- )
{
if ( c[i] == nr )
{
st.push(v[i]);
nr--;
}
}
g<<st.size();
g<<'\n';
while (!st.empty())
{
g<<st.top()<<" ";
}
}