Cod sursa(job #345969)

Utilizator georgelRector George georgel Data 5 septembrie 2009 21:40:37
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<fstream>

using namespace std;

ofstream fout("scmax.out");
int n,a[100001],b[100001],maxi;
void read(){
     ifstream fin("scmax.in");
     fin>>n;
     for(int i = 1; i <= n; i++)
     fin>>a[i];
fin.close();     
}     
int recurs(int maxi,int q){
     if(q == 0)return 0;
     else
     if(b[q] == maxi)
     {
             recurs(maxi-1,q-1);
             fout<<a[q]<<" ";
     }
     else recurs(maxi,q-1);
}
void write(){
     fout<<maxi<<"\n";
    recurs(maxi,n);
}
int searchbsol(int k){
    int i,bsol=0;
    for(i = k-1;i >= 1; i--)
          if(a[i] < a[k] && b[i] > bsol)
          bsol = b[i];
return bsol+1;
}
void scmax(){
     for(int i = 2; i <= n; i++)
     {
             b[i] = searchbsol(i);
             if(b[i] > maxi)
             maxi = b[i];
     }
}

int main(){
read();
maxi = 1;
b[1] = 1;
scmax();
write();
fout.close();
return 0;
}