Pagini recente » Cod sursa (job #1686290) | Cod sursa (job #947267) | Cod sursa (job #873966) | Cod sursa (job #1897541) | Cod sursa (job #2629961)
#include <iostream>
#include <fstream>
#include <vector>
#include <limits.h>
#include <algorithm>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void CautareBinara(int NrCautat, vector<int>& dp)
{
int inc = 0;
int sf = (int)dp.size() - 1;
while (inc <= sf)
{
int mid = (inc + sf) / 2;
if (dp[mid] < NrCautat)
{
inc = mid + 1;
}
else
{
sf = mid - 1;
}
}
if (inc >= (int) dp.size())
{
dp.push_back(NrCautat);
}
else
{
dp[inc] = NrCautat;
}
}
int main()
{
int n;
fin >> n;
vector<int> sir(n);
for (int& x : sir)
{
fin >> x;
}
vector<int> dp;
for (int i = 0; i < n; i++)
{
CautareBinara(sir[i], dp);
}
fout << dp.size() << '\n';
for (int x : dp)
{
fout << x << ' ';
}
}
/*
*/