Cod sursa(job #174983)

Utilizator sigridMaria Stanciu sigrid Data 9 aprilie 2008 14:04:02
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream.h>
#define dim 100001

ifstream f("scmax.in");
ofstream g("scmax.out");

unsigned long a[dim];

struct max
{unsigned long lg;
unsigned long p;
};
max v[dim];

int main()
{unsigned long n,i,j,maxim,mm=0,parinte,poz;

f>>n;
for(i=1;i<=n;++i) f>>a[i];
f.close();

for(i=1;i<=n;i++)
{maxim=0;parinte=i;
 for(j=i-1;j>=1;--j)
  if(a[j]<a[i])
   if(v[j].lg>maxim)
    {maxim=v[j].lg;
     parinte=j;
    }
 v[i].lg=maxim+1;
 if(v[i].lg>mm) {mm=v[i].lg;poz=i;}
 v[i].p=parinte;
}

g<<mm<<'\n';

i=poz;
j=1;
do
{v[j].lg=a[i];
 ++j;
 i=v[i].p;
}
while(v[i].p!=i);

v[j].lg=a[i];

for(i=j;i>=1;--i) g<<v[i].lg<<" ";

g<<'\n';
g.close();
return 0;
}