Pagini recente » Cod sursa (job #2236623) | Cod sursa (job #1954757) | Cod sursa (job #594041) | Cod sursa (job #1180769) | Cod sursa (job #3242445)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int sz = 100000;
int v[sz + 5];
int bst[sz + 5];
int t[sz + 5];
int bk;
int n;
int cb(int val)
{
int poz = 0;
int st = 1;
int dr = bk;
while(st<=dr)
{
int mid = (st+dr)/2;
if(val > v[bst[mid]])
st=mid+1,poz=mid;
else
dr=mid-1;
}
return poz;
}
void afis(int ind)
{
if(t[ind])
afis(t[ind]);
fout<<v[ind]<<' ';
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
int r = cb(v[i]);
bk=max(bk,r+1);
bst[r+1]=i;
t[i]=bst[r];
}
fout<<bk<<'\n';
afis(bst[bk]);
}