Pagini recente » Cod sursa (job #2237658) | Cod sursa (job #2935898) | Cod sursa (job #181121) | Cod sursa (job #1235980) | Cod sursa (job #1083707)
#include <cstdio>
#include <fstream>
using namespace std;
int n,i,Max,m,pmax,poz,j;
int best[100005],v[100005],p[100005],sol[100005];
int main() {
FILE *f = fopen("scmax.in","r");
ofstream g("scmax.out");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d", &v[i]);
best[1]=1;
p[1]=-1;
for(i=2;i<=n;i++) {
Max=0;pmax=0;
for(j=1;j<i;j++)
if(v[j]<v[i] && best[j]>Max) {
Max=best[j];
pmax=j;
}
best[i]=Max+1;
if(Max==0)
p[i]=-1;
else
p[i]=pmax;
}
poz=0;Max=0;
for(i=1;i<=n;i++)
if(best[i]>Max)
{
Max=best[i];
poz=i;
}
g<<Max<<"\n";
m=Max;
for(;poz!=-1;poz=p[poz]) {
sol[Max]=v[poz];
Max--;
}
for(i=1;i<=m;i++)
g<<sol[i]<<" ";
return 0;
}