Pagini recente » Cod sursa (job #1611637) | Cod sursa (job #2613147) | Cod sursa (job #2372488) | Cod sursa (job #1348398) | Cod sursa (job #1412422)
#include <iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *f,*g;
int v[100005],x[100005],y[100005];
int main()
{
int i,j,m,n,maxim,mij,st,dr,nr,t;
f=fopen("scmax.in","r");
g=fopen("scmax.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(f,"%d",&v[i]);
} nr=0; maxim=0;
for(i=1;i<=n;i++)
{
t=v[i];
st=upper_bound(x+1,x+maxim+1,t)-x;
if(x[st-1]==t) st--;
x[st]=v[i];
nr++;
y[nr]=st;
if(st>maxim) maxim=st;
} m=maxim;
while(maxim>=1)
{
for(i=n;i>=1;i--)
{
if(y[i]==maxim)
{
x[maxim]=v[i];
break;
}
}
maxim--;
}
fprintf(g,"%d\n",m);
for(i=1;i<=m;i++)
{
fprintf(g,"%d ",x[i]);
}
fclose(f);
fclose(g);
return 0;
}