Pagini recente » Cod sursa (job #646508) | Cod sursa (job #151589) | Cod sursa (job #1430366) | Cod sursa (job #1712305) | Cod sursa (job #770812)
Cod sursa(job #770812)
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,p[100001],t[100001],i,j,maxim,poz,bigMax,bigPoz;
long v[100001],minim;
int main()
{f>>n;
for(i=1; i<=n; i++)
f>>v[i];
p[1]=1;
for(i=2; i<=n; i++)
{maxim=0; minim=2000000001; poz=0;
for(j=1; j<=i-1; j++)
{if(v[i]>v[j] && p[j]==maxim)
{if(v[j]<minim)
{poz=j;
minim=v[j];}
}
if(v[i]>v[j] && p[j]>maxim)
{maxim=p[j];
poz=j;
minim=v[j];}
}
t[i]=poz;
p[i]=maxim+1;
if(p[i]>bigMax)
{bigMax=p[i];
bigPoz=i;}
/* for(int k=1; k<=n; k++)
g<<p[k]<<" ";
g<<endl;
for(int k=1; k<=n; k++)
g<<t[k]<<" ";
g<<endl<<endl;*/
}
g<<bigMax<<endl;
i=0;
while(bigPoz)
{p[bigMax-i]=bigPoz;
bigPoz=t[bigPoz];
i++;
}
for(int i=1; i<=bigMax; i++)
g<<v[p[i]]<<" ";
f.close();
g.close();
return 0;}