Pagini recente » Cod sursa (job #816767) | Cod sursa (job #2764362) | Cod sursa (job #1450944) | Cod sursa (job #199467) | Cod sursa (job #2261671)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
#define max(a,b) a > b ? a : b
int n,v[1001],k,a[1001],maximao = -1,b[1001],t;
void citire()
{int i;
fin>>n;
for(i = 1; i <= n ; i++)
fin>>v[i];
}
void parcurgere(int k)
{int i,maxim = -1;
for(i = 1; i < k; i++)
if(a[i] > maxim && v[i] <= v[k])
maxim = a[i];
a[k] = 1 + maxim;
maximao = max(maximao,maxim+1);
}
void rezolvare()
{citire();
int i;
a[1] = 1;
for(i = 2; i <= n; i++)
{parcurgere(i);
}
fout<<maximao<<'\n';
for(i = 1; i <= n; i++)
if(a[i] == maximao)
{b[++t] = v[i];
maximao--;
break;}
while(maximao > 0)
{for(i = 1; i <= n; i++)
if(a[i] == maximao && v[i] <= b[t])
{b[++t] = v[i];
maximao--;
break;
}
}
for(i = t; i >= 1; i--)
fout<<b[i]<<' ';
}
int main()
{ rezolvare();
return 0;
}