Pagini recente » Cod sursa (job #1227633) | Cod sursa (job #529078) | Cod sursa (job #557924) | Cod sursa (job #1061924) | Cod sursa (job #1170729)
#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, inc;
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";
inc = lsc;
for (i=n; i>=1; i--)
if (p[i] == inc) {
a[inc]=v[i];
inc--;
}
for (i=1; i<=lsc; i++)
g<<a[i]<<" ";
return 0;
}