Cod sursa(job #318886)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 29 mai 2009 20:28:44
Problema Subsir 2 Scor 36
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
# include <stdio.h>
int a[10000],b[10000],min,min2,i,j,poz,n,t[10000],max,min3;
int main ()
{
freopen ("subsir2.in","r",stdin);
freopen ("subsir2.out","w",stdout);
scanf ("%i",&n);
for (i=1;i<=n;i++)
scanf ("%i",&a[i]);
b[n]=1;
for (i=n-1;i>=1;i--)
{
min=1000000;
min2=1000000;
min3=1000000;
for (j=i+1;j<=n;j++)
if (a[j]>=a[i] && min2>b[j] && a[j]<min)
{
min2=b[j];
min=a[j];
poz=j;
}
else
if (a[j]>=a[i] && min2==b[j] && a[j]<min && a[j]<min3)
{
min3=a[j];
poz=j;
min=a[j];
}

if (min2!=1000000)
{
b[i]=min2+1;
t[i]=poz;
}
else
{
b[i]=1;
t[i]=0;
}
}
max=0;
for (i=1;i<=n;i++)
if (b[i]>max)
{
max=b[i];
poz=i;
}
printf ("%i\n",max);
printf ("%i ",poz);
while (t[poz]!=0)
{
printf ("%i ",t[poz]);
poz=t[poz];
}
return 0;
}