Pagini recente » Cod sursa (job #1585913) | Cod sursa (job #366209) | Cod sursa (job #1019633) | Cod sursa (job #1413810) | Cod sursa (job #2798493)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
const int DIM = 200005;
map <int, int> tata;
int m, dp[DIM];
int n, k, st, md, dr;
void drum(int crt){
if(crt != 0){
drum(tata[crt]);
fout<<crt<<" ";
}
}
int main (){
fin>>n;
for(int i=1; i<=n; i++){
fin>>k;
st=1;
dr=m;
while(st <= dr){
md = (dr-st)/2+st;
if(dp[md] >= k)
dr=md-1;
else
st=md+1;
}
if(st > m)
m++;
tata[k] = dp[st-1];
dp[st] = k;
}
fout<<m<<"\n";
drum(dp[m]);
return 0;
}