Pagini recente » Cod sursa (job #2676197) | Cod sursa (job #3176029) | Cod sursa (job #1752973) | Cod sursa (job #795097) | Cod sursa (job #873654)
Cod sursa(job #873654)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,i,k,p,x[100002],v[100002],l[100002],max1;
int pozitie(int p, int u, int a)
{
int mij;
while (p<=u)
{
mij=(u-p)/2+p;
if(a==v[mij])
return mij;
if(a<v[mij])
u=mij-1;
if(a>v[mij])
p=mij+1;
}
return p;
}
int main()
{
f>>n;
// k=0 -> numarul de elemente din v
for(i=1;i<=n;i++)
{
f>>x[i];
p=pozitie(1,k,x[i]);
v[p]=x[i];
if(p>=k)
k=p;
l[i]=p;
if(k>max1)
max1=k;
}
g<<max1<<'\n';
for(i=1;i<=k;i++)
g<<x[i]<<' ';
return 0;
}