Pagini recente » Cod sursa (job #2329344) | Cod sursa (job #1780436) | Cod sursa (job #1813089) | Cod sursa (job #2445559) | Cod sursa (job #1361234)
#include <fstream>
#include <algorithm>
#include <stack>
using namespace std;
int n, i, a[100001], q[100001], m, poz, p[100001];
stack <int> stiva;
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(i=1; i<=n; i++)
{
f>>a[i];
}
q[1]=a[1];
p[1]=1;
m=1;
for(i=2; i<=n; i++)
{
poz=lower_bound(q, q+m+1, a[i])-q;
if(poz>m)
{
m++;
q[m]=a[i];
p[i]=m;
}
else
{
q[poz]=a[i];
p[i]=poz;
}
}
g<<m<<"\n";
for(i=1; i<=m; i++)
{
//g<<q[i]<<"\n";
}
for(i=n; i>=1; i--)
{
if(m==0)
break;
if(p[i]==m)
{
//g<<i<<"\n";
stiva.push(a[i]);
//i=p[i];
m--;
//i++;
}
}
while(!stiva.empty())
{
g<<stiva.top()<<" ";
stiva.pop();
}
}