Pagini recente » Cod sursa (job #179149) | Cod sursa (job #785096) | Cod sursa (job #336206) | Cod sursa (job #72383) | Cod sursa (job #2709573)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int n,cnt,v[100001];
int indice[100001],sir[100001];
int cb(int nr)
{
int mij,st = 0,dr = cnt,rasp = cnt;
while(st<=dr)
{
mij = (st+dr)/2;
if(sir[mij] == nr)
return mij;
if(sir[mij]<nr)
{
st = mij + 1;
}
else
if(sir[mij] > nr)
{
dr = mij - 1;
rasp = mij;
}
}
return rasp;
}
int main()
{
f >> n;
for(int i = 1;i<=n;i++)
{
f >> v[i];
}
for(int i = 1;i<=n;i++)
{
int indice_in_sir_final;
indice_in_sir_final = cb(v[i]);
if(indice_in_sir_final == cnt)
{
cnt++;
}
indice[i] = indice_in_sir_final;
sir[indice_in_sir_final] = v[i];
}
g << cnt<< '\n';
for(int i = 0;i<cnt;i++)
g << sir[i]<<" ";
}