Pagini recente » Diferente pentru problema/aglet intre reviziile 2 si 1 | Cod sursa (job #1966047) | Cod sursa (job #228376) | Cod sursa (job #228404) | Cod sursa (job #1967928)
#include <fstream>
#include <algorithm>
#include <map>
#define DN 100005
using namespace std;
int n,v,vmin[DN],r;
map<int,int> lst;
ifstream f("scmax.in");
ofstream g("scmax.out");
void pr(int r) {
if(!r) return;
pr(lst[r]);
cout<<r<<' ';
}
int main() {
f>>n;
for(int i=1; i<=n; ++i) vmin[i]=(1<<30);
for(int i=1; i<=n; ++i) {
f>>v;
int pz=lower_bound(vmin,vmin+n,v)-vmin;
if(pz) {
lst[v]=vmin[pz-1];
vmin[pz]=v;
r=max(r,pz);
}
}
g<<r<<'\n';
pr(vmin[r]);
}