Pagini recente » Cod sursa (job #2700432) | Cod sursa (job #1597035) | Cod sursa (job #1480282) | Cod sursa (job #2862071) | Cod sursa (job #890208)
Cod sursa(job #890208)
#include<cstdio>
#include<vector>
#include<algorithm>
#define NMax 100005
using namespace std;
int n,a[NMax],p[NMax],sol[NMax];
vector <int> q;
vector <int>::iterator it;
void scmax ()
{
int i;
for (i=0; i<n; i++)
{
it=lower_bound(q.begin(),q.end(),a[i]);
if (it!=q.end())
{
*it=a[i];
p[i]=it-q.begin();
}
else
{
q.push_back(a[i]);
p[i]=q.size()-1;
}
}
}
int main ()
{
int i,crt;
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for (i=0; i<n; i++)
scanf("%d",&a[i]);
scmax();
printf("%d\n",q.size());
crt=q.size()-1;
for (i=n-1; i>=0; i--)
if (p[i]==crt)
{
sol[crt]=a[i];
crt--;
}
for (i=0; i<q.size(); i++)
printf("%d ",sol[i]);
return 0;
}