Pagini recente » Cod sursa (job #2761818) | Cod sursa (job #693595) | Cod sursa (job #2761197) | Cod sursa (job #1773704) | Cod sursa (job #2528948)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in"); ofstream fout("scmax.out");
int sc[100010], n, a[100010], l;
string subsir[100010];
int bs(int x, int left, int right){
int m=left+right; m/=2;
if( (sc[m]<x && sc[m+1]>=x) || (sc[m]<x && m>=l) ){return m+1;}
if(sc[m]>=x){return bs(x, left, m);}
if(sc[m]<x){return bs(x, m+1, right);}
}
int main() {
fin>>n;
for(int i=0; i<n; i++){
fin>>a[i];
}
int j;
for(int i=0; i<n; i++){
j=bs(a[i], 0, l);
sc[j]=a[i]; subsir[j]=subsir[j-1]+to_string(a[i])+" ";
l=max(j, l);
}
fout<<l<<"\n"<<subsir[l];
}