Pagini recente » Cod sursa (job #934948) | Borderou de evaluare (job #521036) | Cod sursa (job #892906) | Cod sursa (job #2752143) | Cod sursa (job #1709530)
#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;
}