Cod sursa(job #1412422)

Utilizator geo_furduifurdui geo geo_furdui Data 1 aprilie 2015 11:57:54
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *f,*g;
int v[100005],x[100005],y[100005];
int main()
{
    int i,j,m,n,maxim,mij,st,dr,nr,t;
    f=fopen("scmax.in","r");
    g=fopen("scmax.out","w");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
    {
        fscanf(f,"%d",&v[i]);
    } nr=0; maxim=0;
    for(i=1;i<=n;i++)
    {
         t=v[i];
        st=upper_bound(x+1,x+maxim+1,t)-x;
        if(x[st-1]==t) st--;
        x[st]=v[i];
        nr++;
        y[nr]=st;
        if(st>maxim) maxim=st;
    } m=maxim;
    while(maxim>=1)
    {
        for(i=n;i>=1;i--)
        {
            if(y[i]==maxim)
            {
                x[maxim]=v[i];
                break;
            }
        }
        maxim--;
    }
    fprintf(g,"%d\n",m);
    for(i=1;i<=m;i++)
    {
        fprintf(g,"%d ",x[i]);
    }
    fclose(f);
    fclose(g);
    return 0;
}