Pagini recente » Cod sursa (job #444073) | Cod sursa (job #2917977) | Cod sursa (job #2115051) | Cod sursa (job #2788332) | Cod sursa (job #1770051)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int maxn = 100005;
int w[maxn];
int v[maxn];
int nr;
int cautbin(int x)
{
int st = 1;
int dr = nr;
int ret = 0;
while(st <= dr)
{
int mij = (st + dr) / 2;
if(w[mij] > x)
{
ret = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
return ret;
}
int main()
{
int n;
in >> n;
for(int i = 1; i <= n; i++)
in >> v[i];
for(int i = 1; i <= n; i++)
{
if(v[i] > w[nr])
w[++nr] = v[i];
else if(v[i] < w[nr])
{
int poz = cautbin(v[i]);
w[poz] = v[i];
}
}
out << nr << "\n";
for(int i = 1; i <= nr; i++)
out << w[i] << " ";
out << "\n";
return 0;
}