Cod sursa(job #1113382)

Utilizator santoriniPanea Catalin santorini Data 20 februarie 2014 16:08:46
Problema Subsir crescator maximal Scor 45
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<stdio.h>
using namespace std;
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
int n,i,j,lpoz,k,ok,poz1;
long v[100001],l[100001],lmax,max1;
int main()
{
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(f,"%d",&v[i]);
    l[n]=1;
    lmax=1;
    lpoz=n;
    for(i=n-1;i>=1;i--)
    {
        ok=0;
        l[i]=1;
        max1=0;
        poz1=i;
        for(j=i+1;j<=n;j++)
            if(v[j]>v[i]&&l[j]>max1)
            {
                max1=l[j];
         //       poz1=j;
            }
        l[i]=max1+1;
        if(l[i]>lmax)
        {
            lmax=l[i];
            lpoz=i;
        }
    }
    fprintf(g,"%d\n%d ",lmax,v[lpoz]);
    k=lmax;
    i=lpoz;
    while(i<=n&&k>0)
    {
        j=i+1;
        ok=0;
        while(j<=n&&!ok)
        {
            if(v[j]>v[i]&&l[j]==k-1)
            {
                ok=1;
                k--;
                fprintf(g,"%d ",v[j]);
            }
            j++;
        }
        i++;
    }
    fclose(f);
    fclose(g);
    return 0;
}