Pagini recente » Cod sursa (job #2119015) | Cod sursa (job #487287) | Cod sursa (job #2966516) | Cod sursa (job #735709) | Cod sursa (job #2916784)
#define _CRT_SECURE_NO_WARNINGS 1
#include <fstream>
#include <string>
#include <algorithm>
#include <map>
#include <vector>
#define ll long long
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int n;
int v[100001];
int dp[100001];
int main()
{
ios_base::sync_with_stdio(false);
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> v[i];
dp[i] = 2e9;
}
for (int i = 1; i <= n; i++)
{
/*for (int j = 1; j <= n; j++)
{
if (dp[j - 1] < v[i] && v[i] < dp[j])
dp[j] = v[i];
}*/
int l = 1, r = n;
while (l < r)
{
int mid = (l + r) / 2;
if (dp[mid] < v[i])
l = mid+1;
else
r = mid;
}
if (dp[l - 1] < v[i] && v[i] < dp[l])
dp[l] = v[i];
}
int ans = 0;
for (int i = 1; i <= n; i++)
{
if (dp[i] < 2e9)
ans = i;
}
cout << ans << '\n';
for (int i = 1; i <= n; i++)
{
if (dp[i] < 2e9)
cout << dp[i] << ' ';
}
return 0;
}