Pagini recente » Cod sursa (job #1679522) | Cod sursa (job #1984294) | Cod sursa (job #2156011) | Cod sursa (job #2710509) | Cod sursa (job #788988)
Cod sursa(job #788988)
#include <iostream>
#include <fstream>
using namespace std;
fstream f("scmax.in", ios::in),
g("scmax.out", ios::out);
int s[100001], v[100001], l[100001], n, m;
int BinarySearch(int st, int dr, int value)
{
int mid=(st+dr)/2;
if(st<=dr)
{
if(s[mid]==value)
return mid;
else if(s[mid]>value)
return BinarySearch(st, mid-1, value);
else if(s[mid]<value)
return BinarySearch(mid+1, dr, value);
}
else
return st;
}
void Print(int i, int max)
{
if(!max)
return;
else{
if(l[i]==max)
{
Print(i-1, max-1);
g<<v[i]<<" ";
}
else
Print(i-1, max);
}
}
int main()
{
int i,j,poz, max;
max=-1;
f>>n;
m=0;
for(i=1;i<=n;i++)
{
f>>v[i];
if(m==0)
{
m++;
s[m]=v[i];
l[i]=m;
}
else
{
poz=BinarySearch(1, m, v[i]);
s[poz]=v[i];
l[i]=poz;
if(poz>m)
m=poz;
}
if(l[i]>=max)
max=l[i];
}
g<<max<<endl;
Print(n, max);
return 0;
}