Pagini recente » Cod sursa (job #2703673) | Cod sursa (job #1891747) | Rating Bejan Daria Roxana (daria.roxana18) | Cod sursa (job #273268) | Cod sursa (job #2187387)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int N=100000;
int n;
int v[N+5],dp[N+5];
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>v[i];
dp[i]=(1<<30);
}
for(int i=1;i<=n;i++)
{
int r=0,pas=(1<<17);
while(pas)
{
if(r+pas<=n && dp[r+pas]<v[i])
r+=pas;
pas/=2;
}
dp[r+1]=min(dp[r+1],v[i]);
}
int nr=0;
for(int j=n;j>=1;j--)
{
if(dp[j]!=(1<<30))
{
nr=j;
break;
}
}
fout<<nr<<"\n";
for(int i=1;i<=nr;i++)
fout<<dp[i]<<" ";
return 0;
}
/**
**/