Pagini recente » Cod sursa (job #1962928) | Cod sursa (job #2097345) | Cod sursa (job #1020656) | Cod sursa (job #1086968) | Cod sursa (job #2129103)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int T = 100001;
int v[T], pred[T], poz[T], m, n, j;
int binary_search(int x)
{
int r = 0, pas = 1 << 16;
while(pas)
{
if(r + pas <= m && v[poz[r + pas]] < x) r += pas;
pas /= 2;
}
return r;
}
void subsir(int p)
{
if(pred[p] != 0) subsir(pred[p]);
fout << v[p] << ' ';
}
int main() {
fin >> n;
int i;
for(i = 1; i <= n; i++)
{
fin >> v[i];
j = binary_search(v[i]);
if(j == m) m++;
pred[i] = poz[j];
poz[j + 1] = i;
}
fout << m << '\n';
subsir(poz[m]);
return 0;
}