Pagini recente » Cod sursa (job #1676504) | Cod sursa (job #1908121) | Cod sursa (job #1469489) | Cod sursa (job #1059983) | Cod sursa (job #1515933)
#include <fstream>
#include <stdlib.h>
#define MAXN 100001
using namespace std;
ofstream g("scmax.out");
int l[MAXN], prev1[MAXN], v[MAXN];
void scrie(int poz){
if(poz){
scrie(prev1[poz]);
g<<v[poz]<<" ";
}
}
int main()
{
int n, i, lmax, rasp, p;
ifstream f("scmax.in");
f>>n;
for(i=1; i<=n; i++)
f>>v[i];
l[1]=lmax=1;
for(i=2; i<=n; i++){
p=1<<17; rasp=0;
while(p){
if(rasp+p<=lmax && v[l[rasp+p]]<v[i])
rasp+=p;
p>>=1;
}
if(rasp==lmax)
++lmax;
prev1[i]=l[rasp];
l[rasp+1]=i;
}
g<<lmax<<'\n';
scrie(l[lmax]);
g<<"\n";
g.close();
return 0;
}