Pagini recente » Diferente pentru calibrare-limite-de-timp intre reviziile 210 si 209 | Profil Gavrila Vlad | Atasamentele paginii Clasament ion_7_ian | Gavrila Vlad | Cod sursa (job #1304846)
#include <bits/stdc++.h>
#define MX 100002
using namespace std;
int a[MX],d[MX],n;
int main()
{
ifstream in("scmax.in");
in>>n;
for(int i=1;i<=n;i++)in>>a[i];
int p,sol=0;
for(int i=1;i<=n;i++)
{
for(int j=i-1;j>=0;j--)
if(a[j]<a[i])
d[i]=max(d[i],d[j]+1);
if(d[i]>sol)
{
sol=d[i];
p=i;
}
}
vector<int> s;
while(p)
{
s.push_back(a[p]);
for(int j=p-1;j>=0;j--)
if(d[j]==d[p]-1 && a[j]<a[p])
{
p=j;
break;
}
}
reverse(s.begin(),s.end());
ofstream out("scmax.out");
out<<sol<<'\n';
for(vector<int>::iterator i=s.begin();i!=s.end();i++)out<<*i<<' ';
return 0;
}