Cod sursa(job #1254305)
| Utilizator | Data | 2 noiembrie 2014 15:15:03 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.89 kb |
#include <iostream>
#include <cstdio>
using namespace std;
int s,d,mij,a,V[100000],P[100000],n,lungime;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&a);
if (V[lungime]<a)
{
lungime++;
V[lungime]=a;
P[i]=lungime;
}
else
{
s=1;
d=lungime;
do
{
if (s==d)
{
V[s]=a;
P[i]=s;
}
else
{
mij=(s+d)/2;
if (V[i]<a) s=mij+1;
else d=mij;
}
}
while (s!=d);
}
}
printf("%d\n",lungime);
for (int i=1;i<=lungime;i++)
printf("%d ",V[i]);
}
