Pagini recente » Cod sursa (job #597238) | Cod sursa (job #1605099) | Cod sursa (job #1777422) | Cod sursa (job #233807) | Cod sursa (job #1170725)
#include <fstream>
#define NMax 100001
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n, v[NMax], p[NMax], q[NMax], st, dr, mij, ind, i, lsc, a[NMax], k;
int main()
{
f>>n;
for (i=1; i<=n; i++)
f>>v[i];
for (i=1; i<=n; i++) {
st=1;
dr=lsc;
while (st<=dr) {
mij=(st+dr)/2;
if (q[mij] < v[i])
st=mij+1;
else {
dr=mij-1;
ind=mij;
}
}
if (v[i] > q[lsc]) {
q[++lsc]=v[i];
p[++k]=lsc;
}
else {
q[ind]=v[i];
p[++k]=ind;
}
}
g<<lsc<<"\n";
for (i=k; i>=1; i--)
if (a[p[i]] == 0)
a[p[i]]=v[i];
for (i=1; i<=lsc; i++)
g<<a[i]<<" ";
return 0;
}