Pagini recente » Cod sursa (job #2509438) | Cod sursa (job #2961969) | Cod sursa (job #559676) | Cod sursa (job #2624380) | Cod sursa (job #2763930)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int s[100005], v[100005], n, maxim;
int main() {
fin >> n;
for(int i = 1; i <= n; i++) {
fin >> v[i];
}
fin.close();
for(int i = 1; i <= n; i++) {
int st = 1, dr = maxim;
while(st <= dr) {
int m = (st + dr) / 2;
if(v[s[m]] < v[i]) {
st = m + 1;
} else if(v[s[m]] >= v[i]) {
dr = m - 1;
}
}
s[st] = i;
if(st > maxim) {
maxim = st;
}
}
fout << maxim << "\n";
for(int i = 1; i <= maxim; i++) {
fout << v[s[i]] << " ";
}
fout.close();
return 0;
}