Pagini recente » Cod sursa (job #2509929) | Cod sursa (job #1332551) | Cod sursa (job #1391683) | Cod sursa (job #2160571) | Cod sursa (job #2559517)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
struct adat
{
int nr,maxi,help;
};
vector<adat>x;
vector<int>y;
int i,j,maxi,p,poz;
long long n;
int main()
{
maxi=0;
cin>>n;
x.resize(n+1);
for(i=1;i<=n;++i)
{
cin>>x[i].nr;
x[i].maxi=1;
}
for(i=1;i<=n;++i)
{
for(j=i-1;j>=1;j--)
if(x[i].nr>x[j].nr && x[j].maxi+1>x[i].maxi)
{
x[i].help=j;
x[i].maxi=x[j].maxi+1;
if(x[i].maxi>maxi)
{
maxi=x[i].maxi;
poz=i;
}
}
}
cout<<maxi<<"\n";
p=maxi;
for(i=poz;i>=1;i--)
if(x[i].maxi==p)
{
p--;
y.push_back(x[i].nr);
}
for(i=y.size()-1;i>=0;--i)
cout<<y[i]<<" ";
return 0;
}