Cod sursa(job #1570145)
Utilizator | Vasii Dan Emanuel Vasiidan12 | Data | 16 ianuarie 2016 11:12:00 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.66 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("suma.in");
ofstream g("suma.out");
int a[100],b[100],n,mx,k,l[100];
void solve()
{
int i,j;
l[n]=1;
for (i=n-1;i>=1;i--)
{
mx=0;
for (j=i+1;j<=n;j++)
if (l[j]>mx && a[i]<=a[j])
mx=l[j];
l[i]=mx+1;
}
mx=0;
for (i=1;i<=n;i++)
if (l[i]>mx){
mx=l[i];
k=i;
}
}
void afis ()
{
int i;
g<<mx<<'\n';
for (i=k;i<=n && mx;i++)
if (l[i]==mx)
{g<<a[i]<<' ';
mx--;}
}
int main()
{ int i,j;
f>>n;
for (i=1;i<=n;i++)
f>>a[i];
solve();
afis();
}