Pagini recente » Diferente pentru home intre reviziile 902 si 646 | Cod sursa (job #2352279) | Cod sursa (job #2201376) | Cod sursa (job #426731) | Cod sursa (job #791196)
Cod sursa(job #791196)
#include<stdio.h>
#define DIM 100010
int i,j,v[DIM],l[DIM],p,n,maxi,ok,maxim,w[DIM],k, t[DIM], pozmaxi, pmax, S[DIM];
//t[i] = pozitia elementului ce il precede pe V[i] in subsirul maxim ce se termina pe pozitia i
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
l[1]=1;
maxi=1;
for(i=2;i<=n;i++)
{
maxim = 0;
for(j=i-1;j>=1;j--)
{
if (v[j] < v[i] && (l[j] > maxim)) {
maxim = l[j];
pmax = j;
}
}
if (maxim!=0) {
t[i] = pmax;
}
l[i] = 1 + maxim;
if(l[i]>maxi) {
maxi=l[i];
pozmaxi = i;
}
ok=0;
}
printf("%d\n",maxi);
k=maxi;
j=n;
w[k+1]=99999999;
while(k>0)
{
for(i=1;i<=j;i++)
{
if(l[i]==k)
{
if(v[i]<w[k+1])
{
w[k]=v[i];
j=i-1;
k--;
}
}
}
}
for(i=1;i<=maxi;i++)
{
printf("%d ",w[i]);
}
return 0;
}