Pagini recente » preoji_2010 | Cod sursa (job #1701063) | Cod sursa (job #1666000) | Cod sursa (job #1579387) | Cod sursa (job #303673)
Cod sursa(job #303673)
#include<fstream.h>
long a[100005],q[100005],p[100005],sol[100005];
long n,i,j,k,min,poz;
int main()
{
ifstream fin("scmax.in");
fin>>n;
for (i=1; i<=n; i++)
fin>>a[i];
k=0;
for (i=1; i<=n; i++)
{
min=2147483647; poz=0;
for (j=1; j<=k; j++)
if (a[i]<=q[j]) // <= daca sirul este strict crescator, < altfel
if (q[j]<min)
{
min=q[j];
poz=j;
}
if (poz==0)
{
k++;
q[k]=a[i];
p[i]=k;
} else
{
q[poz]=a[i];
p[i]=poz;
}
}
j=k;
for (i=n; i>=1; i--)
if (p[i]==j)
{
sol[j]=a[i];
j--;
}
ofstream fout("scmax.out");
fout<<k<<'\n';
for (i=1; i<=k; i++)
fout<<sol[i]<<" ";
fin.close();
fout.close();
return 0;
}