Pagini recente » Cod sursa (job #1101043) | Monitorul de evaluare | Cod sursa (job #2567908) | Cod sursa (job #3333001) | Cod sursa (job #1129613)
#include <cstdio>
using namespace std;
int pozant[100021], valmin[100021], a[100021], lungime[100021], al_mai_mare, indice;
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
int n;
scanf("%d", &n);
int i, li, lf, m;
for (i=1; i<=n; i++)
{
scanf("%d", &a[i]);
valmin[i]=2000000021;
}
valmin[1]=a[1];
pozant[1]=0;
lungime[1]=1;
for (i=2; i<=n; i++)
{
li=1;
lf=i-1;
m=(li+lf+1)/2;
while (li<=lf)
if (valmin[m]>=a[i])
{
lf=m-1;
m=(li+lf+1)/2;
}
else
{
li=m+1;
m=(li+lf+1)/2;
}
lungime[i]=m;
if (valmin[m]>a[i])
valmin[m]=a[i];
}
for (i=1; i<=n; i++)
if (lungime[i]>al_mai_mare)
{
al_mai_mare=lungime[i];
indice=i;
}
printf("%d\n", al_mai_mare);
for (i=1; i<=al_mai_mare; i++)
printf("%d ", valmin[i]);
return 0;
}