Pagini recente » Cod sursa (job #595901) | Cod sursa (job #3156253) | Cod sursa (job #2964953) | Cod sursa (job #2008623) | Cod sursa (job #1164224)
#include <fstream>
using namespace std;
int x[100];
int m[100];
int ne[100];
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,i,j,smax=-1,poz,d=0;
f>>n;
for (i=1;i<=n;i++)
{
f>>x[i];
if (x[i-1]==x[i]) d++;
}
for (i=n;i>=1;i--)
{
m[i]=1;
ne[i]=-1;
for (j=i+1;j<=n;j++)
if (x[i] <= x[j]&& m[i]<=m[j]) {m[i]=m[j]+1;ne[i]=j;}
}
for (i=1;i<=n;i++)
if (smax<m[i]) {smax=m[i];poz=i;}
g<<smax-d<<'\n'<<x[poz]<<" ";
for (i=2;i<=smax;i++)
if (x[poz]!=x[ne[poz]]) {poz=ne[poz];g<<x[poz]<<" ";}
else poz++;
g<<'\n';
f.close();
g.close();
return 0;
}