Pagini recente » Cod sursa (job #1787880) | Cod sursa (job #2549827) | eusebiu_oji_2017_cls9 | Cod sursa (job #2292171) | Cod sursa (job #1338630)
#include <fstream>
#define IN "scmax.in"
#define OUT "scmax.out"
#define DMAX 100005
using namespace std;
ifstream fin (IN);
ofstream fout (OUT);
int A[DMAX], Best[DMAX], poz[DMAX];
int n;
void citire()
{
int i;
fin>>n;
for (i=1; i<=n; i++)
fin>>A[i];
}
void Dinamica()
{
int i, j, aux;
j=1;
Best[1]=A[1]; poz[1]=1;
for (i=2; i<=n; i++)
{
if (A[i] <= Best[j]) ///cautare binara
{
aux=j;
while (A[i]<Best[aux]) aux--;
Best[aux+1]=A[i];
poz[i]=aux+1;
}
else
{
j++;
Best[j]=A[i];
poz[i]=j;
}
}
}
void afisare()
{
int i, maxim;
maxim=poz[1];
for (i=2; i<=n; i++)
if (maxim<poz[i])
maxim=poz[i];
fout<<maxim<<'\n';
for (i=1; i<=maxim; i++)
fout<<Best[i]<<" ";
}
int main()
{
citire();
Dinamica();
afisare();
return 0;
}