Cod sursa(job #1131492)

Utilizator victor_crivatCrivat Victor victor_crivat Data 28 februarie 2014 20:32:06
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
using namespace std;
int a[100],i,j,m,n,poz[100],v[100],nmax;
ifstream f("scmax.in");
ofstream g("scmax.out");
int cautare(int x,int st,int dr)
{int mmax=0,imax=0;
    while (st<=dr)
    {if (x<v[(st+dr)/2]) dr=(st+dr)/2-1;
    else {if (v[(st+dr)/2]>mmax){mmax=v[(st+dr)/2];
                               imax=(st+dr)/2;}
         st=(st+dr)/2+1;
         }
    }
         return imax;
}
int main()
{f>>n;
for (i=1;i<=n;i++) f>>a[i];
poz[1]=1;
v[1]=a[1];
nmax=1;
for (i=2;i<=n;i++)
{m=cautare(a[i],1,nmax);
v[m+1]=a[i];
poz[i]=m+1;
if (m+1>nmax) nmax=m+1;
}
int w=0;
for (i=1;i<=n;i++)
if (poz[i]>w) w=poz[i];
g<<w;
g<<'\n';
for (i=1;i<=nmax;i++) g<<v[i]<<" ";
g<<'\n';
}