Cod sursa(job #1686621)

Utilizator cyg_ieeuVasile Radu-Andrei cyg_ieeu Data 12 aprilie 2016 12:37:53
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include <cstdio>
#include <algorithm>
#include <climits>

using namespace std;

struct vect
{
    int x,y,z,t;
};
vect v[1005];
int main()
{
    freopen("scmax.in", "r",stdin);
    freopen("scmax.out", "w",stdout);
    int n,i,pozinc,j,k,l,lmax = -1,mi;
    scanf("%d", &n);
    for(i = 1; i <= n; i++)
        scanf("%d", &v[i].x);
    for(i = 1; i <= n; i++)
    {
        l = 0;
        v[++l].y = i;
        v[l].t = v[i].x;
        for(k = i + 1; k <= n; k++)
        {
            mi = INT_MAX;
            for(j = k; j <= n; j++)
            {
                if(v[j].x < mi && v[j].x > v[l].t)
                {
                    mi = v[j].x;
                    pozinc = j;
                }
            }
            if(mi != INT_MAX)
            {
                v[++l].y = pozinc;
                v[l].t = mi;
                k = pozinc;
            }
        }
        if(l > lmax)
        {
            lmax = l;
            for(j = 1;j <= l;j++)
                v[j].z = v[j].y;
        }
    }
    printf("%d\n",lmax);
    for(i = 1;i <= lmax;i++)
        printf("%d ",v[v[i].z].x);
    return 0;
}