Pagini recente » Istoria paginii runda/becreative23/clasament | Cod sursa (job #2133682) | Istoria paginii runda/becreative23/clasament | Cod sursa (job #1413793) | Cod sursa (job #808810)
Cod sursa(job #808810)
#include <fstream>
using namespace std;
ifstream intrare("scmax.in");
ofstream iesire("scmax.out");
int lgmax[100], urm[100], a[100];
int n;
void citire();
void pd();
void afisare();
int main()
{
citire();
pd();
afisare();
return 0;
}
void pd()
{
int i, j;
//initializare
lgmax[n]=1; urm[n]=-1;
for (i=n-1;i>=1;i--)
{
//calculez lgmax[i]
lgmax[i]=1; urm[i]=-1;
for (j=i+1;j<=n;j++)
if (a[i]<a[j]&&lgmax[i]<1+lgmax[j])
{lgmax[i]=1+lgmax[j];urm[i]=j;}
}
}
void afisare()
{
int i, maxim, pozmax, aux;
maxim=lgmax[1];pozmax=1;
for (i=2;i<=n;i++)
if (maxim<lgmax[i]){maxim=lgmax[i];pozmax=i;}
iesire<<maxim<<'\n';
iesire<<a[pozmax]<<' ';
for (i=2;i<=n;i++)
{
if (urm[i]!=-1)
iesire<<a[urm[i]]<<' ';
aux=urm[i];i++;
while (urm[i]==aux)i++;
}
}
void citire()
{
intrare>>n;
int i;
for (i=1;i<=n;i++)
intrare>>a[i];
}