Pagini recente » Cod sursa (job #891693) | Cod sursa (job #2211926) | Cod sursa (job #757562) | Cod sursa (job #1151115) | Cod sursa (job #2323888)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <ctime>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100001];
int aux[100001];
int poz[100001];
int solutie[100001];
int main()
{
int n, i, k, st, dr, mij;
f>>n;
k=0;
for(i=1; i<=n; i++)
{
f>>v[i];
st=0;
dr=k;
while(st<dr)
{
mij=(st+dr)/2;
if(aux[mij]==v[i])
st=dr=mij;
else if(aux[mij]<v[i])
st=mij+1;
else
dr=mij;
}
mij=(st+dr)/2;
if(st==k && v[i]>=aux[k])
k++;
aux[mij]=v[i];
poz[i]=mij;
}
g<<k<<endl;
dr=k-1;
for(i=n; i>0; i--)
{
if(poz[i]==dr)
{
solutie[dr]=i;
dr--;
}
}
for(i=0; i<k; i++)
g<<v[solutie[i]]<<" ";
return 0;
}