Pagini recente » Cod sursa (job #1657126) | Cod sursa (job #494119) | Cod sursa (job #1558547) | Cod sursa (job #2695366) | Cod sursa (job #1080552)
#include <fstream>
#define MAX 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[MAX], best[MAX], prec[MAX], secv[MAX], seq_len, n;
int cautb(int x)
{
int st,dr,m;
st=0;
dr=seq_len;
m=(st+dr)/2;
while(st<=dr)
{
if(v[secv[m]]<x)
st=m+1;
else
dr=m-1;
m =(st+dr)/2;
}
return m;
}
void afis(int poz)
{
if(prec[poz]!=0)
afis(prec[poz]);
g<<v[poz]<<" ";
}
int main()
{
int i;
f >> n;
for(i=1;i<=n;i++)
f>>v[i];
secv[1]=1;
seq_len=1;
for(i=2;i<=n;i++)
{
int poz = cautb(v[i]);
prec[i] = secv[poz];
secv[poz+1] = i;
if(poz==seq_len)
seq_len ++;
}
g<<seq_len<<"\n";
afis(secv[seq_len]);
return 0;
}