Pagini recente » Cod sursa (job #2267288) | Cod sursa (job #488539) | Cod sursa (job #2295027) | Cod sursa (job #2637397) | Cod sursa (job #2883169)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define NMAX 100005
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int n, v[NMAX], cnt, poz[NMAX];
int q[NMAX];
void afishare (int i, int cnt)
{
if(poz[i]==cnt)
{
if(i)
afishare(i-1, cnt-1);
fout<<v[i]<<" ";
}
else if(i)
afishare(i-1, cnt);
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
fin>>v[i];
for(int i=1; i<=n; i++)
{
int pos = lower_bound(q, q+cnt, v[i]) - q;
cout<<pos<<" ";
if(pos == cnt)
{
poz[i]=cnt;
q[(cnt++)]=v[i];
}
else
{
q[pos]=v[i];
poz[i]=pos;
}
}
cnt--;
fout<<cnt+1<<"\n";
afishare(n, cnt);
return 0;
}