Pagini recente » Cod sursa (job #1074201) | Cod sursa (job #1117901) | Cod sursa (job #3133902) | Cod sursa (job #3290907) | Cod sursa (job #2228125)
#include<bits/stdc++.h>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
#define mx 100007
int index[mx] , pre[mx] , sequence[mx] , length , ans[mx];
int main(){
int n ;
in >> n ;
for(int i = 0 ; i < n ; i ++ )
in >> sequence[i] ;
int l , r , mid;
for(int i = 0 ; i < n ; i ++){
//binary search
l = 1 ;
r = length ;
while(l <= r ){
mid = (l+r) / 2 ;
if(sequence[index[mid]] < sequence[i])
l = mid + 1 ;
else r = mid - 1 ;
}
//update
index[l] = i ;
pre[i] = index[l - 1];
if(l > length)
length = l ;
}
out << length <<'\n';
int j = index[length];
for(int i = 0 ; i < length ; i ++){
ans[length - i - 1] = sequence[j];
j = pre[j];
}
for(int i = 0 ; i < length ; i++ )
out << ans[i] << " " ;
in.close();
out.close();
}