Cod sursa(job #770812)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 23 iulie 2012 23:01:28
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<fstream>
#include<iostream>
using namespace std;

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

int n,p[100001],t[100001],i,j,maxim,poz,bigMax,bigPoz;
long v[100001],minim;

int main()
{f>>n;
for(i=1; i<=n; i++)
  f>>v[i];
p[1]=1;  
for(i=2; i<=n; i++)  
  {maxim=0;  minim=2000000001;   poz=0;
    for(j=1;  j<=i-1;  j++)
    {if(v[i]>v[j] && p[j]==maxim)      
           {if(v[j]<minim)
            {poz=j;
            minim=v[j];} 
            } 
     if(v[i]>v[j] && p[j]>maxim)
          {maxim=p[j];
           poz=j;
           minim=v[j];}
 
     }
   t[i]=poz;
   p[i]=maxim+1;        
   if(p[i]>bigMax)
     {bigMax=p[i];
     bigPoz=i;}
 /*  for(int k=1; k<=n; k++)
     g<<p[k]<<" ";
   g<<endl;    
    for(int k=1; k<=n; k++)
     g<<t[k]<<" ";
   g<<endl<<endl;*/ 
   }           
g<<bigMax<<endl;
i=0;
while(bigPoz)
{p[bigMax-i]=bigPoz;
 bigPoz=t[bigPoz];
 i++;
}   

for(int i=1; i<=bigMax; i++)
  g<<v[p[i]]<<" ";
f.close();
g.close();    
return 0;}