Cod sursa(job #1458037)

Utilizator ASTELOTudor Enescu ASTELO Data 6 iulie 2015 10:40:41
Problema Subsir 2 Scor 42
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<cstdio>
struct eu{int nr,val,pr;};
eu v[50001];
int i,n,j,m,k,poz,mx=50000,cate,vc[50001];
int main ()
{
freopen("subsir2.in","r",stdin);
freopen("subsir2.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
    scanf("%d",&v[i].val);
v[1].pr=0;
v[1].nr=1;
for(i=2;i<=n;i++)
    {
    int min=1000000,max=-1000000000,pr=0;
    for(j=i-1;j>=1;j--)
        {
        if(v[j].val<v[i].val&&v[j].val>max&&v[j].nr<min)
            {
            min=v[j].nr;
            max=v[j].val;
            pr=j;
            }
        if(v[j].val<v[i].val&&v[j].val>max)
            max=v[j].val;
        }
    v[i].nr=min+1;
    v[i].pr=pr;
    }
for(i=1;i<=n;i++)
    {
    int pp=0;
    if(i!=n)
        for(j=i+1;j<=n;j++)
            if(v[j].val>v[i].val)
                {
                pp=1;
                break;
                }
    if(pp==0&&v[i].nr<mx)
        {
        mx=v[i].nr;
        poz=i;
        }
    }
printf("%d\n",mx);
while(v[poz].pr!=0)
    {
    vc[++cate]=poz;
    poz=v[poz].pr;
    }
vc[++cate]=poz;
for(i=mx;i>=1;i--)
    printf("%d ",vc[i]);
return 0;
}