Pagini recente » Cod sursa (job #2365913) | Cod sursa (job #2196027) | Cod sursa (job #675727) | Cod sursa (job #2118788) | Cod sursa (job #3261635)
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <set>
#include <map>
#include <algorithm>
#define MAX 2000000001
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int main()
{
int n; fin >> n;
vector<int> v(n);
vector<int> b(n + 1, MAX);
vector<int> dp(n + 1, 0);
for(int i = 0;i < n;fin >> v[i++]);
for(int i = 0;i < n;i++)
{
vector<int>::iterator it = lower_bound(b.begin(), b.end(), v[i]);
int pos = it - b.begin();
b[pos] = v[i];
dp[i] = pos + 1;
}
// for(int i = 0;i <= n;i++) cout << dp[i] << " ";
// cout << endl;
fout << *max_element(dp.begin(), dp.end()) << endl;
for(int i = 0;i < n;i++)
{
if(b[i] == MAX) break;
fout << b[i] << " ";
}
}