Pagini recente » Cod sursa (job #3178523) | Cod sursa (job #2641500) | Cod sursa (job #1341116) | Istoria paginii runda/racovita_10_vacanta_tema | Cod sursa (job #2540803)
#include <iostream>
#include <fstream>
#define MAXX 100010
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int n, m, st, dr, mid;
int v[MAXX], d[MAXX], t[MAXX];
void drum(int i){
if(i != 0){
drum(t[i]);
fout<<v[i]<<" ";
}
}
int main (){
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
m=1;
d[1]=1;
for(int i=2; i<=n; i++){
st=1;
dr=m;
while(st <= dr){
mid=(st+dr)/2;
if(v[d[mid]] >= v[i])
dr=mid-1;
else
st=mid+1;
}
if(st > m){
m++;
d[m]=i;
t[i]=d[st-1];
}else{
d[st]=i;
t[i]=d[st-1];
}
}
fout<<m<<"\n";
drum(d[m]);
return 0;
}