Cod sursa(job #1687466)

Utilizator andreizaicescuAndrei Zaicescu andreizaicescu Data 12 aprilie 2016 21:19:55
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int a[100],b[100],c[100],n,i,k;
int caut(int x, int y, int nr)
{
    int m=(x+y)/2;
    while(x<=y)
    {
        m=(x+y)/2;
        if(c[m]==nr)
            return m;
        else
            if(c[m]>nr)
        {
            y=m-1;
        }
        else
            x=m+1;
    }
    return x;
}
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>a[i];
    b[1]=1;
    c[1]=a[1];
    k=1;
    for(i=2;i<=n;i++)
    {
        int r=caut(1,k,a[i]);
        if(a[i]<=c[r])
        {
            b[i]=r;
            c[r]=a[i];
        }
        else
        {
            k++;
            b[i]=k;
            c[k]=a[i];
        }
    }
    g<<k;
    return 0;
}