Pagini recente » Cod sursa (job #1807039) | Cod sursa (job #2925911) | Cod sursa (job #716452) | Cod sursa (job #2727256) | Cod sursa (job #649803)
Cod sursa(job #649803)
#include<stdio.h>
int q[100000];
int cautare(int x,int nr)
{
int max=2000000000,c=-1;
for(int i=0;i<nr;i++)
if(q[i]>=x && q[i]<max)
{
c=i;
max=q[i];
}
if(c==-1)
return nr;
return c;
}
int main()
{
int a[100000],p[100000],n,i,j,k,nr=0;
FILE *f=fopen("scmax.in","rt");
FILE *g=fopen("scmax.out","wt");
fscanf(f,"%i",&n);
for(i=0;i<n;i++)
fscanf(f,"%i",&a[i]);
for(i=0;i<n;i++)
{
k=cautare(a[i],nr);
p[i]=k+1;
if(k==nr)
{
q[nr]=a[i];
nr++;
}
else
q[k]=a[i];
}
k=nr;
j=0;
for(i=n-1;i>=0;i--)
if(p[i]==nr)
{
nr--;
q[j++]=i+1;
}
fprintf(g,"%i\n",k);
for(i=k-1;i>=0;i--)
fprintf(g,"%i ",a[q[i]-1]);
}