Pagini recente » Cod sursa (job #335784) | Cod sursa (job #1002935) | Cod sursa (job #2025720) | Cod sursa (job #1035743) | Cod sursa (job #2591298)
#include <bits/stdc++.h>
using namespace std;
ofstream fout ("scmax.out");
int *v, *link;
void show (int poz) {
if (poz!=-1) {
show(link[poz]);
fout << v[poz] << ' ';
}
}
int main () {
ifstream fin ("scmax.in");
ios::sync_with_stdio(false);
vector <int> deck, pos;
pos.push_back(-1);
int n, i;
fin >> n;
v=new int[n], link=new int[n];
for (i=0; i<n; i++) {
fin >> v[i];
auto it=upper_bound(deck.begin(), deck.end(), v[i]-1);
if (it==deck.end())
deck.push_back(v[i]),
link[i]=pos.back(),
pos.push_back(i);
else
*it=v[i],
pos[it-deck.begin()+1]=i,
link[i]=pos[it-deck.begin()];
}
fout << deck.size() << '\n';
show(pos.back());
return 0;
}