Cod sursa(job #1176262)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 25 aprilie 2014 20:08:48
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream in("decrease.in");
ofstream out("decrease.out");
int v[5009],sol[5009],p[5009],n,best,bst= 0,nr;

int main()
{

    in>>n;
    int i,j;
    for(i = 1 ; i <= n ; i++)
        in>>v[i];
    sol[n] = 1;
    p[n] = 1;
    for(i = n-1 ; i >= 1 ; i--)
    {
        best = 0;
        for(j = i+1 ; j <= n ; j++)
            if(v[j] < v[i] && sol[j] > best) best = sol[j];
        sol[i] = best+1;
        for(j = i+1 ; j <= n ; j++)
            if(v[j] < v[i] && sol[j] == best) p[i] +=p[j];
        if(!p[i]) p[i]++;
        if(sol[i] > bst) bst = sol[i];
    }
    for(i = 1 ; i <= n ; i++)
        if(sol[i] == bst) nr+=p[i];
    out<<bst<<" "<<nr;
    in.close();
    out.close();
    return 0;
}