Cod sursa(job #1007395)

Utilizator savulescustefanSavulescu Stefan savulescustefan Data 8 octombrie 2013 21:17:14
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int n,a[100004],s,i,poz[100004],j,best[100004],Max;
int b(int x)
{
    int m,st,dr;
    st=1;
    dr=n;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if (a[m]==x)
        return m;
        else if (a[m]>x)
        dr=m-1;
        else
        st=m+1;
    }
    return st;
}
int main()
{
    f>>n;
    for (i=1;i<=n;i++)
    f>>a[i];
    for (i=1;i<=n;i++)
        poz[i]=b(a[i]);
        best[1]=a[1];
        Max=a[i];
        j=1;
    for (i=2;i<=n;i++)
        {
         if (poz[i]<=poz[i-1])
         {
             if (a[i]>best[j-1])
             {
             best[j]=a[i];
             Max=a[i];
             }
         }
         else if (poz[i]>poz[i-1])
         {
             j++;
             best[j]=a[i];
             Max=a[i];
         }
        }
        for (i=1;i<=j;i++)
        g<<best[i]<<" ";
    return 0;
}