Pagini recente » Cod sursa (job #791338) | Cod sursa (job #2485041) | Cod sursa (job #801921) | Cod sursa (job #438493) | Cod sursa (job #3357619)
#include <fstream>
#define DIM 100010
using namespace std;
int V[DIM], T[DIM], D[DIM];
int n, m, i, p, u, mid;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void sol(int i){
if (i){
sol(T[i]);
fout<<V[i]<<" ";
}
}
int main(){
fin>>n;
for (i=1;i<=n;i++)
fin>>V[i];
m = 1;
D[1] = 1;
for (i=2;i<=n;i++){
p = 1;
u = m;
while(p<=u){
mid = p+(u-p)/2;
if (V[ D[mid] ] >= V[i])
u = mid - 1;
else
p = mid + 1;
}
if (p > m){
m++;
D[m] = i;
T[i] = D[p-1];
}
else{
D[p] = i;
T[i] = D[p-1];}
}
fout<<m<<"\n";
sol(D[m]);
return 0;
}