Pagini recente » Cod sursa (job #1545853) | Cod sursa (job #2471079) | Cod sursa (job #2954095) | Cod sursa (job #2853800) | Cod sursa (job #1941567)
#include <bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int N = 100005;
int n, v[N], B[N];
vector <pair <int, int> > C;
void printSolution(int D){
if (D == 0)
return;
printSolution(B[D]);
g << v[D] << " ";
}
int main()
{
f >> n;
for ( int i = 1; i <= n; i++ )
f >> v[i];
vector <pair< int, int> > :: iterator it;
C.push_back(make_pair(0,0));
for ( int i = 1; i <= n; i++ ){
it = lower_bound(C.begin(), C.end(), make_pair(v[i],0));
if ( it == C.end() )
{
B[i] = C.back().second;
C.push_back(make_pair(v[i],i));
}
else{
*it = make_pair(v[i],i);
it--;
B[i] = it->second;
}
}
g << C.size()-1 << "\n";
printSolution(C.back().second);
}