Cod sursa(job #2068205)
Utilizator | Data | 17 noiembrie 2017 13:09:24 | |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.67 kb |
#include <fstream>
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int n,i,j,lMax,L[100002],a[100002],P,Max,ult;
int main()
{
f>>n;
for (i=1;i<=n;i++)
f>>a[i];
L[n]=1;
lMax=0;
for (i=n-1;i>=1;i--)
{
Max=0;
for (j=i+1;j<=n;j++)
if (a[i]<a[j] && Max<L[j]) Max=L[j];
L[i]=Max+1;
if (lMax<L[i]) {
lMax=L[i];
P=i;
}
}
g<<lMax<<'\n';
ult=a[P]-1;
for (i=P;i<=n;i++)
if (a[i]>ult && L[i]==lMax)
{
g<<a[i]<<" ";
ult=a[i];
lMax--;
}
return 0;
}