Cod sursa(job #1261894)

Utilizator Eduard6421Eduard Gabriel Eduard6421 Data 12 noiembrie 2014 20:09:15
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<fstream>
#include<iostream>
#include<algorithm>
using namespace std;
ifstream f("lis.in");
ofstream g("lis.out");
int v[10001],p[10001],q[10001],sol[10001];
int main ()
{ int n,i,nq,*it,poz,lis;
f>>n;
for(i=1;i<=n;i++)
    f>>v[i];
nq=1;q[1]=v[1];p[1]=1;
for(i=2;i<=n;i++)
{ it= upper_bound(q+1,q+nq+1,v[i]);
    poz=(int)(it-q);
 if(poz>nq)
 { ++nq;
 }
 q[poz]=v[i];
 p[i]=poz;
}
g<<nq<<"\n";
lis=nq;
poz=n;
for(i=lis;i>0;i--)
{ while(p[poz]!=lis)
    poz--;
    sol[lis]=v[poz];
    lis--;
}
for(i=1;i<=nq;i++)
    g<<sol[i]<<' ';
}