Pagini recente » Cod sursa (job #3127272) | Cod sursa (job #2041762) | Cod sursa (job #1407999) | Cod sursa (job #1431222) | Cod sursa (job #1649978)
#include<fstream>
#define DIM 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[DIM],w[DIM],n,nr,dr,st,mid;
int main(){
fin >> n;
for( int i = 1; i <= n; i++ ){
fin >> v[i];
}
nr = 1;
w[1] = 1;
for( int i = 1; i <= n; i++ ){
if( v[ w[nr] ] < v[i] ){
w[++nr]= i;
}else{
st = 1;
dr = nr;
while( st <= dr ){
mid = ( st + dr ) / 2;
if( v[ w[mid] ] < v[i] ){
st = mid + 1;
}else{
dr = mid - 1;
}
}
if( v[ w[dr] ] < v[i] ){
nr = dr;
w[ ++nr ] = i;
}
}
}
fout << nr << "\n";
for( int i = 1; i <= nr; i++ ){
fout << v[ w[i] ] << " ";
}
return 0;
}