Pagini recente » Cod sursa (job #2982147) | Cod sursa (job #596373) | Cod sursa (job #2747222) | Cod sursa (job #2080923) | Cod sursa (job #673000)
Cod sursa(job #673000)
#include <stdio.h>
FILE *c = fopen("scmax.in","r"),*s = fopen("scmax.out","w");
int n,a[100003],best[100003],pozitie[100003],max=1,p_start=1;
void citeste()
{
fscanf(c,"%d",&n);
for(int i=1;i<=n;i++)
fscanf(c,"%d",&a[i]);
}
void prelucrare()
{
best[n] = 0;
pozitie[n] = 0;
for(int i=n-1;i>=1;i--)
{
best[i] = 0;
pozitie[i] = 0;
for(int h=i+1;h<=n;h++)
if(a[i]<a[h] and best[i]<=best[h])
{
best[i] = best[h]+1;
pozitie[i] = h;
if(best[i]>max)
max = best[i],p_start=i;
}
}
}
void afisare()
{
fprintf(s,"%d\n",n);
int i=p_start;
while(i!=0)
{
fprintf(s,"%d ",a[i]);
i = pozitie[i];
}
}
int main()
{
citeste();
prelucrare();
afisare();
}