Cod sursa(job #156592)

Utilizator vicenzo_cnuStan Alexandru Dan vicenzo_cnu Data 12 martie 2008 17:20:50
Problema Subsir 2 Scor 28
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<stdio.h>
#define maxn 5001
long v[maxn],t[maxn],rez[maxn];
int n,i,j,p;
long long max;
FILE *f,*g;
int main()
{f=fopen("subsir2.in","r");
g=fopen("subsir2.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
for(i=n;i>0;i--)
{max=0;p=0;
for(j=i+1;j<=n;j++)
if(v[i]<v[j] )
if( max<rez[j])
{max=rez[j];p=j;}
else if(max==rez[j] && v[j]<v[p])
p=j;
rez[i]=max+1;
if(rez[p]==0)
t[i]=-1;
else
t[i]=p;}
max=0;p=0;
for(i=1;i<=n;i++)
if(max<rez[i])
{max=rez[i];p=i;}
fprintf(g,"%lld\n",max);
while(p!=-1)
{fprintf(g,"%d ",p);
p=t[p];}
fclose(f);
fclose(g);
return 0;}