Pagini recente » Cod sursa (job #1686265) | Cod sursa (job #2235674) | Cod sursa (job #1777001) | Cod sursa (job #2388761) | Cod sursa (job #2331226)
#include <cstdio>
using namespace std;
FILE *f,*g;
int n,v[100002],lgm=0;
void dinamica(int x)
{
if(lgm==0)
{
v[++lgm]=x;
return;
}
if(x<v[1])
{
v[1]=x;
return;
}
if(x>v[lgm])
{
v[++lgm]=x;
return;
}
int st=1,dr=lgm,mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]>x && v[mij-1]<x)
{
break;
}
if(v[mij]<x)
st=mij+1;
else
dr=mij-1;
}
v[mij]=x;
}
int main()
{
int x;
f=fopen("scmax.in","r");
g=fopen("scmax.out","w");
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
{
fscanf(f,"%d",&x);
dinamica(x);
}
fprintf(g,"%d\n",lgm);
for(int i=1;i<=lgm;++i)
fprintf(g,"%d ",v[i]);
fclose(f);
fclose(g);
return 0;
}