Pagini recente » Cod sursa (job #2973374) | Cod sursa (job #826924) | Cod sursa (job #2715044) | Cod sursa (job #2890030) | Cod sursa (job #2187419)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int N=100000;
int n;
int v[N+5],mic[N+5],t[N+5],m;
void slove(int poz)
{
if(poz==0)
return;
slove(t[poz]);
fout<<v[poz]<<" ";
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
for(int i=1;i<=n;i++)
{
int r=0,pas=(1<<17);
while(pas)
{
if(r+pas<=m && v[i]>v[mic[r+pas]])
r+=pas;
pas/=2;
}
if(r==m)
m++;
mic[r+1]=i;
t[i]=mic[r];
}
fout<<m<<"\n";
int poz=mic[m];
//fout<<poz<<"\n";
slove(poz);
return 0;
}
/**
**/