Cod sursa(job #1131636)

Utilizator DisturbedTeuca Sergiu Disturbed Data 28 februarie 2014 22:42:54
Problema Subsir crescator maximal Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <sstream>
#include <fstream>
using namespace std;

const int NMAX = 100000;
int n;
long v[NMAX];

void LIS(long v[])
{
    int Size[NMAX];
    string Path[NMAX];

    for(int i=0; i<=n; i++)
    {
        Size[i] = 1;
        stringstream ss;
        ss<<v[i];
        Path[i] = ss.str();
    }

    int maxLength = 0;
    for(int i=1; i<=n; i++)
        for(int j=0; j<=i; j++)
            if(v[i]>v[j] && Size[i]<Size[j]+1)
            {
                Size[i] = Size[j]+1;
                stringstream ss;
                ss<<Path[j]<<" "<<v[i];
                Path[i] = ss.str();
                if(maxLength<Size[i])
                    maxLength = Size[i];
            }
    ofstream g("scmax.out");
    g<<maxLength;
    for(int i=0; i<=n; i++)
        if(Size[i] == maxLength)
            {
                g<<endl<<Path[i];
                break;
            }
}

int main()
{
    ifstream f("scmax.in");
    f>>n;
    for(int i=0; i<=n; i++)
        f>>v[i];
    LIS(v);
}