Pagini recente » Cod sursa (job #1654748) | Cod sursa (job #3261268) | Cod sursa (job #1199632) | Cod sursa (job #508200) | Cod sursa (job #2392585)
#include <bits/stdc++.h>
#define N_MAX 100002
using namespace std;
const int INF = 2e9+1;
int n;
int v[N_MAX];
int dp[N_MAX], index[N_MAX];
int main()
{
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
fin >> n;
for(int i = 1; i <= n; i++)
{
fin >> v[i];
dp[i] = INF;
}
int mx = 0;
for(int i = 1; i <= n; i++)
{
int l = 0, r = n, mid;
while(l < r)
{
mid = (l + r) / 2;
if(dp[mid] <= v[i])
l = mid + 1;
else
r = mid;
}
if(v[i] < dp[l] && v[i] > dp[l - 1])
{
mx = max(mx, l);
dp[l] = v[i];
index[l] = i;
}
}
fout << mx << "\n";
for(int i = 1; i <= mx; i++)
fout << dp[i] << " ";
fout << "\n";
return 0;
}