Pagini recente » Cod sursa (job #398502) | Cod sursa (job #1364622) | Cod sursa (job #1802070) | Cod sursa (job #2416199) | Cod sursa (job #1941585)
#include <bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int N = 100005;
const pair <int, int> INF = make_pair(1<<30, 1<<30);
int n, v[N], B[N], L;
vector <pair <int, int> > C( N, INF);
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[0]=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->first==(1<<30))
L++;
*it=make_pair(v[i],i);
it--;
B[i]=it->second;
}
g << L << "\n";
printSolution(C[L].second);
}