Cod sursa(job #1709530)

Utilizator mariateguianiMaria Teguiani mariateguiani Data 28 mai 2016 12:44:17
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("decrease.in");
ofstream fout("decrease.out");

//short int pentru eficienta
short int n;
short int v[5001],lung[5001],u[32768];
int nr[32768];

int main()
{
    short int i,j,lmax=0;
    int rez=0;
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>v[i];


    nr[1]=lung[1]=1;
    u[v[1]] = 1;
    for(i=2; i<=n; i++)
    {
        lung[i] = 0;
        nr[i]=1;
        for (j=1; j<i; j++)
        {
            if(v[j] > v[i] && u[v[j]] == j) //descrescator && e prima aparitie
            {
                if(lung[j] == lung[i])
                    nr[i] = (nr[i]+nr[j]);
                if(lung[j] > lung[i])
                {
                    lung[i]=lung[j];
                    nr[i]=nr[j];
                }
            }
        }
        u[v[i]] = i;
        lung[i]++;
        if(lung[i]>lmax)
            lmax=lung[i];
    }

    for(i=1; i<=n; i++)
        if(lung[i] ==  lmax && u[v[i]] == i)
            rez = (rez + nr[i]);
    fout<<lmax<<" "<<rez;


}