Cod sursa(job #950410)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 16 mai 2013 19:30:36
Problema Subsir 2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
using namespace std;
ifstream fin ("subsir2.in");
ofstream fout ("subsir2.out");

int s[5001],l,v[5001],n,i,ls,ld,m,ind[5001];

int main ()
{
    fin>>n;
    for (i=1;i<=n;i++) fin>>v[i];
    s[1]=v[1]; l=1; ind[1]=1;
    for (i=2;i<=n;i++)
    {
        if (v[i]>=s[l]) {s[++l]=v[i]; ind[l]=i;}
        else
        {
            ls=1; ld=l;
            while (ls<ld)
            {
                m=(ls+ld)/2;
                if (v[i]>s[m]) ls=m+1;
                else ld=m-1;
            }
        if (s[ls]>v[i]) {s[ls]=v[i]; l=ls;}
        else {s[ls+1]=v[i]; l=ls+1;}
        ind[l]=i;
        }
    }
    fout<<l<<"\n";
    for (i=1;i<=l;i++) fout<<ind[i]<<" ";
}