Pagini recente » Cod sursa (job #2934917) | Cod sursa (job #1125118) | Cod sursa (job #3161719) | Cod sursa (job #1452140) | Cod sursa (job #887960)
Cod sursa(job #887960)
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int poz,i,nr,n,x;
vector<pair<int,int> > b(100005);
vector<int> sol,a(10005);
int cautbin(int st,int dr,int x)
{
int m=(st+dr)/2;
if (st==dr && x<=a[st]) return st;
if (st==dr && x>a[st]) return ++nr;
if (a[m]<x) cautbin(m+1,dr,x);
else if (a[m]>x) cautbin(st,m,x);
}
int main()
{
in>>n>>a[++nr];
b[1]=make_pair(1,a[1]);
for (i=2;i<=n;i++)
{
in>>x;
poz=cautbin(1,nr,x);
a[poz]=x;
b[i]=make_pair(poz,x);
}
out<<nr<<'\n';
for (i=n;i>=1;i--)
if (b[i].first==nr)
{
nr--;
sol.push_back(b[i].second);
}
for (i=sol.size()-1;i>=0;i--)
out<<sol[i]<<' ';
}