Pagini recente » Cod sursa (job #1812114) | Cod sursa (job #1857770) | Cod sursa (job #2972694) | Cod sursa (job #2491547) | Cod sursa (job #2336689)
#include <fstream>
#include <algorithm>
using namespace std;
int v[1000005], d[1000005], cnt, p[1000005], vect[1000005], n, lung[1000005], maxim=0, k=-1, maxx=1, sol;
void cautare_binara(int target)
{
int l, r, mid;
l=0;
r=maxx;
sol=0;
while(l<=r)
{
mid=(l+r)/2;
if(lung[mid]<target)
{
sol = mid;
l=mid+1;
}
else
r=mid-1;
}
maxx=max(maxx, sol+1);
}
int main()
{
ifstream cin("scmax.in");
ofstream cout("scmax.out");
cin>>n;
int prev=0;
for(int i=1; i<=n; ++i)
{
cin>>v[i];
}
d[1]=1;
lung[1]=v[1];
maxx=1;
for(int i=2; i<=n; ++i)
{
cautare_binara(v[i]);
d[i]=sol+1;
lung[sol+1]=v[i];
}
cout<<maxx<<"\n";
k = maxx;
for(int i=n;i>=1;i--){
if(d[i]==k)
vect[k]=v[i];
k--;
}
for(int i=1; i<=maxx; ++i)
cout<<lung[i]<<" ";
return 0;
}