Pagini recente » Cod sursa (job #553931) | Cod sursa (job #2067110) | Cod sursa (job #2456980) | Cod sursa (job #1606554) | Cod sursa (job #1808056)
#include <fstream>
#define DEF 100001
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,v[DEF],R[DEF],T[DEF],i,ln,F[DEF];
int main(){
fin >> n;
for (i = 1; i <= n; i ++){
fin >> v[i];
R[i] = -1;
}
T[1] = 1; ln = 1;
for (i = 2; i <= n; i++){
int st=1;
int dr=ln;
int mid;
while(st<=dr)
{
mid=(st+dr)/2;
if(v[T[mid]]<v[i])
{
st=mid+1;
}
else
dr=mid-1;
}
if(st>ln) ln++;
T[st]=i;
R[i]=T[st-1];
}
fout<<ln<<'\n';
int curr = T[ln];
int k=0;
while(curr!=0){
F[++k] = v[curr];
curr = R[curr];
}
for (i = k; i >= 1; i--){
fout<<F[i]<<" ";
}
return 0;
}