Pagini recente » Cod sursa (job #1394202) | Cod sursa (job #2825285) | Cod sursa (job #2240142) | Cod sursa (job #3134181) | Cod sursa (job #2696638)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, s[100001], best[100001][2], maxval, maxpos, maxcombo[100001];
void read()
{
fin>>n;
for(int i=0; i<n; i++)
fin>>s[i];
}
void solve()
{
for(int i=1; i<n; i++)
{
for(int j=i; j>=0; j--)
{
if(s[j]<s[i] && best[j][0]+1>best[i][0])
{
best[i][0]=best[j][0]+1;
best[i][1]=j;
}
}
if(best[i][0]>maxval)
{
maxval=best[i][0];
maxpos=i;
}
}
maxval++;
}
void show(int poz, int c)
{
if(c<0)
return;
maxcombo[c-1]=s[poz];
show(best[poz][1], c-1);
}
int main()
{
read();
solve();
fout<<maxval<<'\n';
show(maxpos, maxval);
for(int i=0; i<maxval; i++)
fout<<maxcombo[i]<<" ";
return 0;
}