Pagini recente » Cod sursa (job #2718891) | Cod sursa (job #1936298) | Cod sursa (job #2327667) | Cod sursa (job #2531916) | Cod sursa (job #1561367)
#include <fstream>
#define ValN 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int N, i, v[ValN];
int be, en, mid, x, mx;
int dp[ValN], inv[ValN];
int main()
{
fin >> N;
for (i=1; i<=N; i++)
{
fin >> v[i];
inv[i]=2000000000;
}
for (i=1; i<=N; i++)
{
be=1;
en=i-1;
x=0;
while (be<=en)
{
mid=(be+en) / 2;
if (inv[mid]>=v[i])
en=mid-1;
else
{
be=mid+1;
x=max(x, mid);
}
mid=(be+en) / 2;
}
dp[i]=x+1;
mx=max(dp[i], mx);
inv[dp[i]]=min(inv[dp[i]], v[i]);
}
fout << mx << '\n';
for (i=1; i<=mx; i++)
fout << inv[i] << " ";
fin.close();
fout.close();
return 0;
}