Pagini recente » Cod sursa (job #2133546) | Cod sursa (job #2738337) | Cod sursa (job #136967) | Cod sursa (job #2794551) | Cod sursa (job #1504044)
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
/*
Programare dinamica
1)Subsir crescator maximal (scmax)
*/
int n, dp[1000005]; ///dp[i] =subsirul cres max care se termina cu v[i]
int t[1000005];///t[i]=elementul anterior din subsir
int v[1000005],i,j;//sir
void afis(int p){
if(t[p]!=-1)
afis(t[p]);
fout<<v[p]<<" ";
}
int main()
{
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
dp[i]=1;
t[i]=-1;
}
for(i=1;i<=n;i++){
for(j=1;j<i;j++){
if(v[j]<v[i]&&dp[i]<dp[j]+1){
dp[i]=dp[j]+1;
t[i]= j;
}
}
}
int sol=1,poz=1;
for(i=1;i<=n;i++){
if(dp[i]>sol)
sol=dp[i],poz=i;
}
fout<<sol<<endl;
afis(poz);
return 0;
}